缙哥哥的博客
与你分享我的点点滴滴生活

WordPress - DUX主题 Tag 标签增加自定义SEO功能

280G全国流量的电信星海卡仅需29元/月,长期可续该套餐,随时可注销

WordPress的DUX主题是缙哥哥使用的最久的一款正版主题,最近呢有小伙伴问我,为什么 Tag 标签没有自定义SEO功能?问我能不能给DUX主题加一个 Tag 标签跟分类目录那样的自定义 SEO 功能……

WordPress - DUX主题 Tag 标签增加自定义SEO功能

缙哥哥当时是有点郁闷的……毕竟DUX主题的标签SEO已经非常好了,从缙哥哥的博客就可以看出,很多标签都已被收录,并排名在前。但是万一人家是个SEO高手呢?我的观点也未必是正确的,所以还是搞了一下这个东西。

DUX主题分类目录与标签对比

缙哥哥当前演示版本为DUX6.3版本。如果你也喜欢,可以移步购买DUX主题。

DUX主题后台标签编辑页

DUX主题的后台中,标签只有简简单单的名称、别名、图像描述这3个字段。

WordPress - DUX主题 Tag 标签增加自定义SEO功能

DUX主题后台分类编辑页

而分类目录,却有SEO标题SEO关键词(keywords)SEO描述(description)这3个自定义SEO字段

WordPress - DUX主题 Tag 标签增加自定义SEO功能

OK,那我们就来给 Tag 标签页也增加这几个功能吧!

代码修改

添加 Tag 标签 SEO 字段

首先,将下面的代码添加到你的主题functions.php文件中,也就是在标签编辑那添加这3个字段。

//DUX主题 Tag 标签增加自定义 SEO 功能 - https://www.dujin.org/15730.html
class __Tax_Tags{

function __construct(){
add_action( 'add_tag_form_fields', array( $this, 'add_tag_field' ) );
add_action( 'edit_tag_form_fields', array( $this, 'edit_tag_field' ) );

add_action( 'edited_post_tag', array( $this, 'save_tag_meta' ), 10, 2 );
add_action( 'create_post_tag', array( $this, 'save_tag_meta' ), 10, 2 );
}

public function add_tag_field(){
echo '
<div class="form-field">
<label for="tag_meta[title]">SEO 标题</label>
<input type="text" name="tag_meta[title]" id="tag_meta[title]" />
</div>
<div class="form-field">
<label for="tag_meta[keywords]">SEO 关键字(keywords)</label>
<input type="text" name="tag_meta[keywords]" id="tag_meta[keywords]" />
</div>
<div class="form-field">
<label for="tag_meta[keywords]">SEO 描述(description)</label>
<textarea name="tag_meta[description]" id="tag_meta[description]" rows="4" cols="40"></textarea>
</div>
';
}

public function edit_tag_field( $term ){

$term_id = $term->term_id;
$tag_meta = get_option( "_tags_meta_$term_id" );

$meta_style = isset($tag_meta['style']) ? $tag_meta['style'] : '';

$meta_title = isset($tag_meta['title']) ? $tag_meta['title'] : '';
$meta_keywords = isset($tag_meta['keywords']) ? $tag_meta['keywords'] : '';
$meta_description = isset($tag_meta['description']) ? $tag_meta['description'] : '';

echo '
<tr class="form-field">
<th scope="row">
<label for="tag_meta[title]">SEO 标题</label>
<td>
<input type="text" name="tag_meta[title]" id="tag_meta[title]" value="'. $meta_title .'" />
</td>
</th>
</tr>
<tr class="form-field">
<th scope="row">
<label for="tag_meta[keywords]">SEO 关键字(keywords)</label>
<td>
<input type="text" name="tag_meta[keywords]" id="tag_meta[keywords]" value="'. $meta_keywords .'" />
</td>
</th>
</tr>
<tr class="form-field">
<th scope="row">
<label for="tag_meta[description]">SEO 描述(description)</label>
<td>
<textarea name="tag_meta[description]" id="tag_meta[description]" rows="4">'. $meta_description .'</textarea>
</td>
</th>
</tr>
';
}

public function save_tag_meta( $term_id ){

if ( isset( $_POST['tag_meta'] ) ) {

$tag_meta = array();

$tag_meta['style'] = isset ( $_POST['tag_meta']['style'] ) ? esc_sql( $_POST['tag_meta']['style'] ) : '';
$tag_meta['title'] = isset ( $_POST['tag_meta']['title'] ) ? esc_sql( $_POST['tag_meta']['title'] ) : '';
$tag_meta['keywords'] = isset ( $_POST['tag_meta']['keywords'] ) ? esc_sql( $_POST['tag_meta']['keywords'] ) : '';
$tag_meta['description'] = isset ( $_POST['tag_meta']['description'] ) ? esc_sql( $_POST['tag_meta']['description'] ) : '';

update_option( "_tags_meta_$term_id", $tag_meta );

}
}

}

$tax_tags = new __Tax_Tags();

添加前端输出

这里需要修改DUX主题function-theme.php文件。

修改title标题

Ctrl+F搜索function _title函数,再在其下方找到is_tag(),如果没有自行添加判断逻辑

if(is_tag()){
$html = single_tag_title();
$tag_ID = get_queried_object()->term_id;
$tags_meta = get_option( "_tags_meta_$tag_ID" );
if(isset($tags_meta['title'])){
$html=$tags_meta['title']._get_delimiter().get_bloginfo('name');
} 
}

修改keywords关键字

Ctrl+F搜索function _the_keywords函数,再在其下方找到is_tag()

$keywords = single_tag_title('', false);
$tag_ID = get_queried_object()->term_id;
$tags_meta = get_option( "_tags_meta_$tag_ID" );
if($tags_meta['keywords']){ 
$keywords=$tags_meta['keywords'];
}

修改description描述

Ctrl+F搜索function_the_description函数,再在其下方找到is_tag()

$description = trim(strip_tags(tag_description()));
$tag_ID = get_queried_object()->term_id;
$tags_meta = get_option( "_tags_meta_$tag_ID" );
if($tags_meta['description']){
$description=$tags_meta['description'];
}

就这么4个地方,就搞定了。主要是DUX主题规范好找,其他主题自行摸索。

缙哥哥还想说的是,如果你的网站没什么内容,你就是自定义SEO弄的再多,弄的再好也没有任何卵用,内容为王!切勿拣了芝麻丢了西瓜,做些本末倒置的事情!

赞(13) 打赏
转载请注明来源及链接:缙哥哥 » WordPress - DUX主题 Tag 标签增加自定义SEO功能
如需 WordPress 优化加速、二次开发、托管等服务,可联系我购买付费服务:点此联系我 | 近期站内热门福利:

评论 3

评论前必须登录!

 

  1. #2

    都没怎么关注SEO,也没做,哈哈!

    Nanlon4年前 (2020-04-29)
  2. #1

    这文章写的不错,简单易懂,赞一个。

    代码狗4年前 (2020-04-27)

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册