有朋自远方来,不亦乐乎。
纯代码为wordpress添加站点关键词与描述
原创 橘子书  发布于 1年前 ( 2017-08-22 ) 阅读: 2,051 次 评论: 10 条 A+

站点的,应该算是最基础的SEO了。

然而,我并不懂SEO。

前几天在折腾(二开)一个板子,发现页首(head)里面,简洁到连关键词与描述都没有。便想着干脆自己动手集合一下该功能吧,虽然咱不懂SEO的深浅,但像这样标配的功能总不能落下吧?!

方法如下:

部署

打开functions文件,扔进以下代码:

//关键字
function lyt_the_keywords() {
	global $new_keywords;
	if( $new_keywords ) {
		echo "<meta name=\"keywords\" content=\"{$new_keywords}\">\n";
		return;
	}

	global $s, $post;
	$keywords = '';
	if (is_singular()) {
		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);
		$the = trim(get_post_meta($post->ID, 'keywords', true));//自定义字段设置关键词
		if ($the) {
			$keywords = $the;
		}
	} elseif (is_home()) {
		$keywords = get_option('lyt_keywords');//后台集合关键词设置选项
	} elseif (is_tag()) {
		$keywords = single_tag_title('', false);
	} elseif (is_category()) {
		$cat = get_query_var('cat');
		$thecat = get_category($cat);
		$slug = $thecat->slug;
		$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}\">\n";
	}
}

以上代码的大概意思,就是手动输入关键词的话,就显示手动的自定义;如果没有就自动匹配关键词,比如文章页,自动以标签为关键词。

//网站描述
function lyt_the_description() {
	global $new_description;
	if( $new_description ){
		echo "<meta name=\"description\" content=\"$new_description\">\n";
		return;
	}

	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("\r\n", "\r", "\n", " ", " "), " ", str_replace("\"", "'", strip_tags($text))));
		if (!($description)) {
			$description = $blog_name . "-" . trim(wp_title('', false));
		}

		$the = trim(get_post_meta($post->ID, 'description', true));//自定义字段设置描述
		if ($the) {
			$description = $the;
		}
	} elseif (is_home()) {
		$description = get_option('lyt_description');//后台集合描述功能
	} elseif (is_tag()) {
		$description = $blog_name . "'" . single_tag_title('', false) . "'";
	} elseif (is_category()) {
		$description = trim(strip_tags(category_description()));
	} 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, 180, 'utf-8');
	echo "<meta name=\"description\" content=\"$description\">\n";
}

代码用途,同关键词。

调用

打开header.php,在任一<meta>下面扔进以下代码:

<?php echo lyt_the_keywords(); ?>
<?php echo lyt_the_description(); ?>

延伸

轻量级主题后台框架

折腾主题,免不了要接触到主题的后台框架。 有能力的大神自己写,惰惫的大神二开或者套用市面上的开源主题框架。至于小白...

发布时间:2017/06/26 作者:橘子书 评论:4

如果使用了这个主题后台框架,那么只要在该文件里面添加以下代码,即可为主题集合后台设置首页关键词与描述的功能选项:

//关键词
array(
        'name'  => '关键词',
        'desc'  => '这里是输入关键词,多个关键词请以英文逗号隔开。',
        'id'    => 'lyt_keywords',
        'type'  => 'textarea',
        'std'   => '起始时默认内容'
    ),
//描述
array(
        'name'  => '描述',
        'desc'  => '这里是输入描述内容',
        'id'    => 'lyt_description',
        'type'  => 'textarea', 
        'std'   => '起始时默认内容'
    ),

至于如何给文章、页面添加自定义关键词与描述,方法很简单,只需在编辑页面找到【custom fields】(即自定义字段),然后手动填写【keywords】、【description】及其值。

Principle Team
龙砚庭官方QQ群,一个坚持强怼的7P成员群!
10人已关注

目前评论:10   其中:访客  5   博主  5

发表评论

莫慌,小狮子正在努力加载评论...
  1. 里维斯社
    里维斯社1 ( 2017.08.24 10:56:33 )  4楼

    网站标题、描述、关键词是必须的,不过纯代码写没试过。文章添加关键词觉得还是有必要的,添加描述就没搞过了。

  2. 懿古今
    懿古今3 ( 2017.08.23 17:21:59 )  地板

    我的站点都是把这些东西写死进去,懒得整合到主题选项

    • 橘子书
      橘子书渣渣橘 ( 2017.08.23 18:55:10 )

      @懿古今 自用的话,不用后台框架都可以(而且写死,更有效率)。只不过我现在为wordpress写功能,都有一个坏毛病——一定要有主题选项,省得以后要改,得翻着主题包,文件挨个找(毕竟时间久了,容易忘了代码写死在哪)。

  3. 热腾网
    热腾网2 ( 2017.08.23 13:07:37 )  板凳

    这个可以有,忘记填写关键字自动匹配标签,可标签有人一片文章设定一个标签,还是手动填写比较好。

    • 橘子书
      橘子书渣渣橘 ( 2017.08.23 18:51:49 )

      @热腾网 除非是有意识地做seo,不然很少有人会去为每篇文章,手动填写关键词与描述。

  4. 龙笑天
    龙笑天3 ( 2017.08.22 12:36:01 )  沙发

    话说这个全局变量 $new_keywords和 $new_description是干嘛用的~ :?: