wordpress自动获取关键词及描述、

昨天处理了下静态页面的事情,莫名其妙的正常了之后发现标题的keywords关键词和描述description个别的页面都无法自动获取,好折腾的我怎么能忍受这个,于是又开始了。。。

seo描述

通过查看各位大佬的代码,我整理了一下比较适合自己用的,代码如下,需要的可以拿走。

<?php
$description = '';
$keywords = '';
if (is_home()) {
   // 将以下引号中的内容改成你的主页description
   $description = "SheRuo.com、一个专注知识产权与经验分享的博客";
   // 将以下引号中的内容改成你的主页keywords
   $keywords = "sheruo, 知识产权博客, 商标博客, 专利博客";
}
elseif (is_single()) {
   $description1 = get_post_meta($post->ID, "description", true);
   $description2 = str_replace("\n","",mb_strimwidth(strip_tags($post->post_content), 0, 200, "…", 'utf-8'));
   // 填写自定义字段description时显示自定义字段的内容,否则使用文章内容前200字作为描述
   $description = $description1 ? $description1 : $description2;
   // 填写自定义字段keywords时显示自定义字段的内容,否则使用文章tags作为关键词
   $keywords = get_post_meta($post->ID,"keywords",true);
   if($keywords == '') {
      $tags = wp_get_post_tags($post->ID);    
      foreach ($tags as $tag ) {        
         $keywords = $keywords . $tag->name .",";    
      }
	  foreach ( get_the_category ( $post->ID ) as $category )
            $keywords .= $category->cat_name . ',';
      $keywords = rtrim($keywords, ', ');	   
   }
}
elseif (is_category()) {
   // 分类的description可以到后台 - 文章 -分类目录,修改分类的描述
   $description = category_description();
   $keywords = single_cat_title('', false);
}
elseif (is_page()){
   // 页面的description
   $description =  str_replace("\n","",mb_strimwidth(strip_tags($post->post_content), 0, 200, "…", 'utf-8'));
   $keywords = $post->post_title;
}
elseif (is_tag()){
   // 标签的description可以到后台 - 文章 - 标签,修改标签的描述
   $description = tag_description();
   $keywords = single_tag_title('', false);
}
elseif (is_search()){
   // 搜索页面的description
   $description = " '" . esc_html ( $s, 1 ) . "' 的搜索結果";
   $keywords =  esc_html ( $s, 1 );
}
$description = trim(strip_tags($description));
$keywords = trim(strip_tags($keywords));
?>
<meta name="keywords" content="<?php echo $keywords; ?>" />
<meta name="description" content="<?php echo $description; ?>" />

以上代码是根据大佬: 露兜 https://www.ludou.org/wordpress-exp-1.html 代码进行整理修改的。大佬给出的代码名没有对is_page()页面,is_search()搜索结果页面进行处理,搜索页用处倒是不大,但页面的用处还是比较大的。

还有通过模版函数处理的方法,大同小异。下面是从时刻需浏览到的代码,直接添加再模版的 function.php 保存即可、

add_action ( 'wp_head', 'wp_keywords' ); // 添加关键字
add_action ( 'wp_head', 'wp_description' ); // 添加页面描述

    /**
 +----------------------------------------------------------
 * 站点关键字(www.shikexu.com)
 +----------------------------------------------------------
 +----------------------------------------------------------
 */
function wp_keywords() {
    global $s, $post;
    $keywords = '';
    if (is_single ()) {  //如果是文章页,关键词则是:标签+分类ID
        if (get_the_tags ( $post->ID )) {
            foreach ( get_the_tags ( $post->ID ) as $tag )
                $keywords .= $tag->name . ', ';
        }
        foreach ( get_the_category ( $post->ID ) as $category )
            $keywords .= $category->cat_name . ', ';
        $keywords = substr_replace ( $keywords, '', - 2 );
    } elseif (is_home ()) {
        $keywords = '时刻需,PHP技术,linux技术,服务器技术,电子技术';  //主页关键词设置
    } elseif (is_tag ()) {  //标签页关键词设置
        $keywords = single_tag_title ( '', false );
    } elseif (is_category ()) {//分类页关键词设置
        $keywords = single_cat_title ( '', false );
    } elseif (is_search ()) {//搜索页关键词设置
        $keywords = esc_html ( $s, 1 );
    } else {//默认页关键词设置
        $keywords = trim ( wp_title ( '', false ) );
    }
    if ($keywords) {  //输出关键词
        echo '<meta name="keywords" content="'.$keywords.'" />';
    }
}


/**
 +----------------------------------------------------------
 * 站点描述
 +----------------------------------------------------------
 */
function wp_description() {
    global $s, $post;
    $description = '';
    $blog_name = get_bloginfo ( 'name' );
    if (is_singular ()) {  //文章页如果存在描述字段,则显示描述,否则截取文章内容
        if (! empty ( $post->post_excerpt )) {
            $text = $post->post_excerpt;
        } else {
            $text = $post->post_content;
        }
        $description = trim ( str_replace ( array (
                "rn",
                "r",
                "n",
                " ",
                " " 
        ), " ", str_replace ( "", "'", strip_tags ( $text ) ) ) );
        if (! ($description))
            $description = $blog_name . "-" . trim ( wp_title ( '', false ) );
    } elseif (is_home ()) {//首页显示描述设置
        $description = $blog_name . "-" . get_bloginfo ( 'description' ) .'首页要显示的描述'; // 首頁要自己加
    } elseif (is_tag ()) {//标签页显示描述设置
        $description = $blog_name . "有关 '" . single_tag_title ( '', false ) . "' 的文章";
    } elseif (is_category ()) {//分类页显示描述设置
        $description = $blog_name . "有关 '" . single_cat_title ( '', false ) . "' 的文章";
    } elseif (is_archive ()) {//文档页显示描述设置
        $description = $blog_name . "在: '" . trim ( wp_title ( '', false ) ) . "' 的文章";
    } elseif (is_search ()) {//搜索页显示描述设置
        $description = $blog_name . ": '" . esc_html ( $s, 1 ) . "' 的搜索結果";
    } else {//默认其他页显示描述设置
        $description = $blog_name . "有关 '" . trim ( wp_title ( '', false ) ) . "' 的文章";
    }
    //输出描述
    $description = mb_substr ( $description, 0, 220, 'utf-8' ) . '..';
    echo '<meta name="description" content="'.$description.'" />';
}

两种方法基本差不多,我是用的第一种,反正后台都是生成静态,那种的最终结果都是一样的。


发表评论

电子邮件地址不会被公开。 必填项已用*标注