首页 > 开源系统应用 > wordpress > 为WordPress分类目录优化添加seo标题、关键字和描述
网站建设、切图、企业建站、微信开发 联系QQ:404658186 tel:18716186715
2015
06-11

为WordPress分类目录优化添加seo标题、关键字和描述

文章目录 [收起]

大家都知道,WordPress自带的分类目录是设置是很简单的,只能设置标题和上下级关系,不能实现标题自定义,添加关键字和描述信息。

有时候想对分类目录做一些seo关键字优化也是无从下手,虽然有很多插件可以实现,但是你懂的,插件安装太多,网站的速度会被拖慢,所以能不用插件的时候我都不用插件,好在wordpress扩展性很强,我们可以通过扩展来实现。

小伙伴们可以查看我的博客分类目录的标题、关键字和描述信息都是自定义的。

为WordPress分类目录优化添加seo标题、关键词和描述

 

 

后台效果图就这样,下面来说说具体的实现。

第一步 新建seocategory.php文件

新建一个新建seocategory.php文件,将其放入你的主题文件夹内。

<?php
add_action('edit_category_form_fields', 'category_function');
function category_function(){
 if(isset($_GET['action']) && $_GET['action'] == 'edit') $value = get_option('cat_set_' . $_GET['tag_ID']);
 $title = 'cat_title';
 $keywords = 'cat_keywords';
 $description = 'cat_description';
?>
 
<table class="form-table"></table>
<h2>自定义SEO信息</h2>
<table class="form-table">
 <tbody>
 <tr class="form-field">
 <th scope="row" valign="top"><label for="<?php echo $title ?>">标题</label></th>
 <td><input name="<?php echo $title ?>" id="<?php echo $title ?>" type="text" value="<?php echo esc_attr(stripslashes($value['title']));
 ?>"><p class="description">默认调用分类名称作为Head中Title信息。</p>
 </td>
 </tr>
 <tr class="form-field">
 <th scope="row" valign="top"><label for="<?php echo $keywords; ?>">关键词</label></th>
 <td><input name="<?php echo $keywords; ?>" id="<?php echo $keywords; ?>" type="text" value="<?php echo $value['keywords'];
 ?>"><p class="description">多个关键词用小写逗号“,”分隔开;默认调用分类名称作为Head中KeyWords信息。</p>
 </td>
 </tr>
 <tr class="form-field">
 <th scope="row" valign="top"><label for="<?php echo $description; ?>">描述</label></th>
 <td><textarea name="<?php echo $description; ?>" id="<?php echo $description;
 ?>" rows="3" cols="30"><?php echo stripslashes($value['description']); ?></textarea><p class="description">若未设置,将显示为“关于‘某某’分类下的所有文章。”作为Head中Description信息。</p>
 </td>
 </tr>
 </tbody>
</table>

<?php
}
add_action('edit_category', 'save_category_function');
function save_category_function(){
if(isset($_POST['action']) && isset($_POST['taxonomy']) && $_POST['action'] == 'editedtag' && $_POST['taxonomy'] == 'category'){
update_option('cat_set_' . $_POST['tag_ID'], array('title' => $_POST['cat_title'], 'description' => $_POST['cat_description'], 'keywords' => $_POST['cat_keywords'], 'template' => $_POST['cat_template'], 'orderby' => $_POST['cat_orderby'], 'per_page' => $_POST['cat_per_page'],));
}
};
?>

第二步 引入到functions.php

将seocategory.php引用到你主题的functions.php 文件中

include("seocategory.php");

第三步 前台调用

后台把相关信息添加好后,就需要到模板进行调用,使用方法如下。

标题获取

if( is_category() ) { 
      	$cat_id = get_query_var('cat');
      	$val = get_option("cat_set_$cat_id");
      	if(!Empty($val) && $val['title']!=''){
        	$title = $val['title'].' - '.get_bloginfo('name');
      	}else{
        	$title = single_cat_title('', false).' - '.get_bloginfo('name');
      	}
}

关键字获取

if( is_category() ) { 
    $cat_id = get_query_var('cat');
    $val = get_option("cat_set_$cat_id");
    if(!Empty($val) && $val['keywords']!=''){
       $keywords = $val['keywords'];
    }else{
       $keywords = single_cat_title('', false);
    }
}

描述获取

if( is_category() ) { 
    $cat_id = get_query_var('cat');
    $val = get_option("cat_set_$cat_id");
    if(!Empty($val) && $val['description']!=''){
    $description= $val['description'];
    }else{
       $description = $blog_name . "'" . single_cat_title('', false) . "'";
    }
}

当然,每个主题有不同的优化方式,上面只是介绍了获取方式,你还需要把它插入到你的主题中去,每个主题对标题,关键字,描述有不同的写法,你需要做的就是把它整合到你的主题中去,下面是我所使用主题示例,供您参考。

//functions.php 文件添加到wp_head();
//标题
	function page_title(){
		global $page, $paged;
		$title = '';
		if(get_option('themes_fo2_seo_ht') && get_option('themes_fo2_seo_on') && ( is_home() || is_front_page())){
			$title = get_option('themes_fo2_seo_ht');
		} elseif ( is_category() ) { 
      		$cat_id = get_query_var('cat');
      		$val = get_option("cat_set_$cat_id");
      		if(!Empty($val) && $val['title']!=''){
        		$title = $val['title'].' - '.get_bloginfo('name');
      		}else{
        		$title = single_cat_title('', false).' - '.get_bloginfo('name');
      		}
  		}else{
  			$title = trim( wp_title('', false) ).' - '.get_bloginfo('name');
  		}
  		// Add a page number if necessary:
  		if ( $paged >= 2 || $page >= 2 )
  			$title .= ' - ' . sprintf( __( 'Page %s', 'frontopen' ), max( $paged, $page ) );
    	echo "";
	}
	add_action('wp_head','page_title');   
	//关键字
	function page_keywords() {
	  global $s, $post;
	  $keywords = '';
	  if ( is_single() ) {
		if ( get_the_tags( $post->ID ) ) {
		  foreach ( get_the_tags( $post->ID ) as $key => $tag ){
		  	$keywordsArr[$key]= $tag->name;
		  }
		  $keywords = implode(',',$keywordsArr);
		}else{
		  $keywords = trim( wp_title('', false) );
		}
		//foreach ( get_the_category( $post->ID ) as $category ) $keywords .= $category->cat_name . ', ';
		//$keywords = substr_replace( $keywords , '' , -2);
	  } elseif ( is_home () )    { $keywords = get_option('themes_fo2_seo_hk');
	  } elseif ( is_tag() )      { $keywords = single_tag_title('', false);
	  //} elseif ( is_category() ) { $keywords = single_cat_title('', false);
	  } elseif ( is_category() ) { 
		$cat_id = get_query_var('cat');
		$val = get_option("cat_set_$cat_id");
		if(!Empty($val) && $val['keywords']!=''){
			$keywords = $val['keywords'];
		}else{
			$keywords = single_cat_title('', false);
		}
		
	  } elseif ( is_search() )   { $keywords = esc_html( $s, 1 );
	  } else { $keywords = trim( wp_title('', false) );
	  }
	  if ( $keywords ) {
		echo "\n";
	  }
	}
	
	add_action('wp_head','page_keywords');   
	
	
	//网站描述
	function page_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( "\r\n", "\r", "\n", " ", " "), " ", str_replace( "\"", "'", strip_tags( $text ) ) ) );
		if ( !( $description ) ) $description = $blog_name . "-" . trim( wp_title('', false) );
	  } elseif ( is_home () )    { $description = get_option('themes_fo2_seo_hd');
	  } elseif ( is_tag() )      { $description = $blog_name . "'" . single_tag_title('', false) . "'";
	  //} elseif ( is_category() ) { $description = $blog_name . "'" . single_cat_title('', false) . "'";
	} elseif ( is_category() ) { 
		$cat_id = get_query_var('cat');
		$val = get_option("cat_set_$cat_id");
		if(!Empty($val) && $val['description']!=''){
			$description = $val['description'];
		}else{
			$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 "\n";
	}
	 
	add_action('wp_head','page_description');

这是我实现的为WordPress分类目录做优化,添加seo标题、关键字和描述信息的一个方法,小伙伴们如果您有更好的方法,或者此方法的有误,欢迎大家指正。

关于后台不能保存问题

有些朋友提出,后台添加标题、关键词、描述等信息不能保存,经检查是wordpress版本不同,在编辑分类目录是所带post参数不同,如下图红色框。

QQ截图20161227131106

 

相应的要对seocategory.php做更改,以下两行。

if(isset($_GET['action']) && $_GET['action'] == 'edit')


if(isset($_POST['action']) && isset($_POST['taxonomy']) && $_POST['action'] == 'editedtag' && $_POST['taxonomy'] == 'category'){
最后编辑:
作者:码农一号
这个作者貌似有点懒,什么都没有留下。
捐 赠如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!

为WordPress分类目录优化添加seo标题、关键字和描述》有 35 条评论

  1. 慕容羽 说:

    后台可以显示,前台调用不出来!

  2. 慕容羽 说:

    <meta name="description" content="” />
    <meta name="keywords" content="” />

    前台网页显示:

  3. 慕容羽 说:

    发不了代码 ,前台网页并没有显示标题、关键字 、描述

  4. 未来世界 说:

    我安装了all in one seo 目录标题被锁定了,关掉插件自己定义的标题才会显示,但是我不想卸掉SEO插件,又想更改目录标题怎么办,求大神支招

    • 码农一号 说:

      跟插件有冲突,可能需要修改插件源码,屏蔽“all in one seo 目录标题”的相关代码。

  5. 大葱 说:

    您好,请问小,我设置完成后,后台显示没有问题。在进行设置时候,显示错误。Warning: Cannot modify header information – headers already sent by……pluggable.php on line 1207。我用的万网虚拟主机。这是什么原因,怎么办呢?

  6. 大葱 说:

    万网 我把缓存 开了,ok了……后台可以设置。但是 前台没有任何显示。好像不存在一样。

  7. yshim 说:

    请问能帮我实现下吗,后台显示了,但前台不知怎么解决,我愿意支付一点费用。方便的话能加下我QQ吗?156239630

  8. 陆舒杰 说:

    博主,你好,如何把自定义分类目录的title改为自定义标签tag呢?可以实现吗?

  9. 模板调用的三段代码是放在哪个模板文件里

  10. 研究了好久还是没实现。前台不能调用。后台输入seo标题也不能保存

  11. xylem 说:

    小兵哥,请问最后一段代码是加到主题哪一个文件里呢?

    • 码农一号 说:

      我是加到function里的,也要吧加模板里

    • 码农一号 说:

      functions.php

      function page_title(){
      	global $page, $paged;
      	$title = '';
      	if ( is_category() ) { 
      		$cat_id = get_query_var('cat');
      		$val = get_option("cat_set_$cat_id");
      		if(!Empty($val) && $val['title']!=''){
      			$title = $val['title'].' - '.get_bloginfo('name');
      		}else{
      			$title = single_cat_title('', false).' - '.get_bloginfo('name');
      		}
      	}else{
      		$title = trim( wp_title('', false) ).' - '.get_bloginfo('name');
      	}
      	// Add a page number if necessary:
      	if ( $paged >= 2 || $page >= 2 )
      		$title .= ' - ' . sprintf( __( 'Page %s', 'frontopen' ), max( $paged, $page ) );
      	echo "\n";
      }
      add_action('wp_head','page_title');  
      

      functions.php 里加了后,模板的header.php 的title标签要删除掉,不然会有两个title

  12. 用这个方法是不是也可以给标签页加上seo标题?

  13. woaowade1 说:

    请问为啥后台没有显示,文件都建好了 也引入functions了

  14. 首页有两个title,默认的标题没办法删除。原因是默认title是调用这个函数里的数据。
    大神有没有办法禁止首页调用wp_head()里的标题。或都首页用码农一号这种方法也在头部文件也行。
    求大神支招

  15. 码农一号 说:

    删除一个

  16. user 说:

    不用数据库??新的字段信息保存到哪里了??

  17. 何许人也 说:

    用了SEO ALL In One 插件,设置的目录标题/关键词/描述等都调用不出来,怎么解决?

留下一个回复

你的email不会被公开。

*