Поместите category_description в мета-описание (wordpress) - PullRequest
0 голосов
/ 20 апреля 2011

Заголовок в моей теме. Я создал следующий код для описания мета:

<?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 } ?>

и включил этот код в свою функцию. 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);
 }
}

, теперь я тожевключить category_description заголовок темы:

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

Вы можете помочь мне, как я могу сделать?спасибо

1 Ответ

1 голос
/ 20 апреля 2011

У вас уже есть работа, выполненная в основном:

<?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 ?>" />

Как вы видите, я бы забыл обо всей очистке, которую вы делаете в metadesc(), просто избавьтесь от html с помощью strip_tags(), но я не вижу необходимости удалять разрывы строк или переводить в html-объекты, конечно не думайте, что поисковые системы будут возражать против разрыва строки или & или &amp;.

Плюс, нет необходимости проверять длину описания. Просто попытайтесь обрезать его, если его длина меньше 150 символов, substr() вернет всю строку без изменений.

EDIT: Отвечая на ваш комментарий, вы можете сделать это следующим образом, если вы предпочитаете использовать metadesc() функцию, которую вы использовали:

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;
}
...