开发者

Place category_description in the meta description (wordpress)

开发者 https://www.devze.com 2023-02-27 00:46 出处:网络
Header in my theme I created the following code for the meta description: <?php if (is_single() || is_page()) { ?>

Header in my theme I created the following code for the meta description:

<?php if (is_single() || is_page()) { ?>
<meta name="description" content="<?php echo metadesc($post->ID); ?>" />
<?php }else{ ?>
<meta name="description" content="<?php bloginfo('description'); ?>" />
<?php } ?>

and included this code in my function.php:

function metadesc($pid) {
$p = get_post($pid);
$description = strip_tags($p->post_content);
$description = str_replace ("\n","",$description)开发者_开发问答;
$description = str_replace ("\r","",$description);
if (strlen($description) > 150) {
return htmlspecialchars(substr($description,0,150) . "...");
}else{
return htmlspecialchars($description);
 }
}

now I want to also incorporate category_description the theme header :

<?php if ( is_category() ) { echo category_description(); } ?>

can you help me how can I do? thanks


You already have the work mostly done:

<?php
    if( is_single() || is_page() ) $description = strip_tags($post->post_content);
    elseif( is_category() ) $description = category_description();
    else $description = get_bloginfo( 'description' );
    $description = substr($description,0,150);
?>

<meta name="description" content="<?= $description ?>" />

As you see, I would forget about all the cleaning you are doing in metadesc(), just get rid of the html with strip_tags(), but I see no need to remove linebreaks or to translate to html entities, certainly I don't think search engines will mind at all about a line break or either a & or a &amp;.

Plus, there is no need to check the length of the description. Just try to truncate it, if its length is less than 150 chars, substr() will return the whole string untouched.

EDIT: Responding to your comment, you can do it this way if you prefer to use the metadesc() function you were using:

function metadesc() {
    global $post;

    if( is_single() || is_page() ) $description = strip_tags($post->post_content);
    elseif( is_category() ) $description = category_description();
    else $description = get_bloginfo( 'description' );

    $description = substr($description,0,150);

    return $description;
}
0

精彩评论

暂无评论...
验证码 换一张
取 消