SEO只是外表
技术才是我的追求

旧版dux主题实现文章页、页面、分类添加自定义SEO标题、关键字和描述

wordpress主题DUX在4.1版本后已经支持在文章页、页面、分类页添加自定义的SEO标题、关键字和描述,这个功能对应一些人来说没啥用,对于注重优化的seoer来说却是很实用。我也算是搞推广的,没有这个功能心里不踏实,可是说来惭愧,本人用的是破解版DUX1.7主题(囊中羞涩 无法 惭愧),是不可能升级的,只好寻思自己解决。

尝试修改主题代码

慢慢查看主题的functions.php代码,在functions-theme.php找到关键的函数_the_keywords()_the_description()_title(),无奈水平有限,只能对着代码干瞪眼。此法不通,只能另觅他法。

尝试借鉴其实主题的现成代码

在我所使用过的主题中,能支持文章页、页面、分类页自定义SEO标题、关键字和描述的主题只有begin主题。我试着把begin主题的seo功能模块搬迁到DUX主题上。过程虽然坑坑洼洼 ,最后还是弄成功了,现在记录下来,给大家参考一下。

1、首先要在后台的文章页、页面、分类页的菜单选项中增加seo选项设置,参照begin主题代码,在functions-admin.php增加以下代码:

// 文章页seo设置
$new_meta_boxes =
array(		
	"title" => array(
		"name" => "title",
		"std" => "",
		"title" => "SEO文章标题,留空则用回原来的标题",
		"type"=>"text"),		
		
	"keywords" => array(
		"name" => "keywords",
		"std" => "",
		"title" => "SEO文章关键词,多个关键词用半角逗号隔开",
		"type"=>"text"),		

	"description" => array(
		"name" => "description",
		"std" => "",
		"title" => "SEO文章描述(留空,则自动截取首段一定字数作为文章描述)",
		"type"=>"textarea"),
);

// 面板内容
function new_meta_boxes() {
    global $post, $new_meta_boxes;
	//获取保存
    foreach($new_meta_boxes as $meta_box) {
        $meta_box_value = get_post_meta($post->ID, $meta_box['name'].'', true);

        if($meta_box_value != "")
        	//将默认值替换为已保存的值
            $meta_box['std'] = $meta_box_value;

        echo'<input type="hidden" name="'.$meta_box['name'].'_noncename" id="'.$meta_box['name'].'_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />';
 //选择类型输出不同的html代码
        switch ( $meta_box['type'] ){
           case 'title':
               echo'<h4>'.$meta_box['title'].'</h4>';
               break;  
           case 'text':
               echo'<h4>'.$meta_box['title'].'</h4>';
               echo '<span class="form-field"><input type="text" size="40" name="'.$meta_box['name'].'" value="'.$meta_box['std'].'" /></span><br />';
               break;
          case 'textarea':
               echo'<h4>'.$meta_box['title'].'</h4>';
               echo '<textarea cols="60" rows="3" name="'.$meta_box['name'].'">'.$meta_box['std'].'</textarea><br />';
               break;
// 创建面板
function create_meta_box() {
    global $theme_name;

    if ( function_exists('add_meta_box') ) {
        add_meta_box( 'new-meta-boxes', 'SEO设置', 'new_meta_boxes', 'post', 'normal', 'high' );
    }
}

// 保存数据
function taxonomy_metadate($term_id){
    if(isset($_POST['cat-title']) && isset($_POST['cat-words'])){
        //判断权限--可改
        if(!current_user_can('manage_categories')){
            return $term_id;
        }
        // 标题
        $title_key = 'cat-title-'.$term_id; // key
        $title_value = $_POST['cat-title']; // value

        // 关键字
        $words_key = 'cat-words-'.$term_id;
        $words_value = $_POST['cat-words'];

        // 更新选项值
        update_option( $title_key, $title_value );
        update_option( $words_key, $words_value );
    }
}

// 触发
add_action('admin_menu', 'create_meta_box');
add_action('save_post', 'save_postdata');

由于篇幅所限,这里添加的只是文章页seo设置的代码,页面和分类页的seo设置代码可以在begin主题的meta-boxes.php和my-field.php中找到。

1 2

未经允许不得转载:棋哥SEO博客 » 旧版dux主题实现文章页、页面、分类添加自定义SEO标题、关键字和描述

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址