I'm writing a simple SEO class that will add the various metatag to the header of wordpress.
I've two little problems with the wordpress api.
The first is that I need to remove the last comma from the tag list, I've tried with rtrim
but without success.
The secont problem is that I'm unable to load the content of the post or page to create the content of the description meta tag. How I can fix these two issues?
<?php
/*
* Plugin Name: Custom Meta Tag
*/
class WP_Custom_Meta_Tag{
private $post_tags;
private $key;
private $keyword;
private $description;
public function init(){
add_action('wp_head', array($this, 'add_meta_description'));
add_action('wp_head', array($this, 'add_meta_keywords'));
}
/*
* metatag keywords
*/
public function add_meta_keywords(){
if( is_single() ){
$post_tags = get_the_tags( $post->ID );
$key = '';
foreach( $post_tags as $keyword ){
$key .= $keyword->name.', ';
}
echo '<meta name="keywords" content="'.$key.'">';
}
}
/*
* metatag description
*/
public function add_meta_description(){
if( is_single() ){
#$description = strip_tags( $post->post_content );
$d = get_the_content( $post->ID );
#$description = strip_shortcodes( $post->post_content );
#$description = str_replace( array("\n", "\r", "\t"), ' ', $description );
#$description = substr( $description, 0, 125 );
#echo '<meta name="description" content="'. $description .'">';
var_dump($d);
}
}
}
$meta = new WP_Custom_Meta_Tag;
$meta->init();
?>
EDIT
I've fixed the issue, and now all seems to work correctly. If anyone has a suggestion to better trim the description text, please share an answer. I've read about wp_trim_words
, but it will not work.
Here is the updated code:
class WP_Custom_Meta_Tag{
private $post_tags;
private $key;
private $keyword;
private $description;
public function init(){
add_action('wp_head', array($this, 'add_metatags'), 1);
}
/*
* metatag keywords
*/
public function add_metatags(){
global $post;
if( is_single() || is_page() ){
$post_tags = get_the_tags( $post->ID );
$key = [];
foreach( $post_tags as $keyword ){
$key[] = $keyword->name;
}
// this part needs to be improved
$description = strip_tags( $post->post_content );
$description = strip_shortcodes( $post->post_content );
$description = str_replace( array("\n", "\r", "\t"), ' ', $description );
$description = substr( $description, 0, 140 );
echo '<meta name="description" content="'. $description .'" />';
echo '<meta name="keywords" content="'.implode(',' ,$key).'" />';
echo '<meta property="og:title" content="'. get_the_title( $post->ID ) .'" />';
echo '<meta property="og:description" content="'. $description .'"/>';
#echo '<meta property="og:type" content="" />';
echo '<meta property="og:url" content="'. get_the_permalink( $post->ID ) .'" />';
if( has_post_thumbnail() ){
echo '<meta property="og:image" content="'. get_the_post_thumbnail_url( $post->ID , 'full') .'" />';
}
}
}
}
$meta = new WP_Custom_Meta_Tag;
$meta->init();
?>