让代码更简单

当前位置:代码狗 > WordPress > WP建站 > 正文

WordPress分类、标签增加SEO字段代码

重要:本文最后更新于2020-04-27 08:35:05,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

WordPress的标签与分类功能很相似,为了提高标签页的收录率,写好SEO是个不错的选择,但默认的WordPress后台标签页中没有SEO设置,所以我们需要自行添加该功能,下面以DUX主题为例,添加标签页SEO字段,(DUX的分类页已经添加过SEO字段了)。

WordPress分类、标签增加SEO字段代码

WordPress分类、标签增加SEO字段代码

添加后台面板

将下面的代码添加到你的主题functions.php中,到后台查看效果,应该如上图所示。

//wordpress增加标签SEO字段
//代码狗 https://www.daimadog.com/6237.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主题或者DMD主题,其它主题自行查找对应的地方。

修改title内容

打开DUX的function-theme.php文件,搜索_title函数,找到is_tag(),如果没有自行添加判断逻辑,改成如下内容:

//wordpress增加标签SEO字段
//代码狗 https://www.daimadog.com/6237.html
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内容

打开DUX的function-theme.php文件,搜索_the_keywords函数,找到is_tag(),改成如下内容:

//wordpress增加标签SEO字段
//代码狗 https://www.daimadog.com/6237.html
$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内容

打开DUX的function-theme.php文件,搜索_the_description函数,找到is_tag(),改成如下内容:

//wordpress增加标签SEO字段 
//代码狗 https://www.daimadog.com/6237.html
$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'];
}

改造完成,部分主题的标题、关键词、描述不是写在function中的,大家自己找自己的,别问我怎么找不到,我对你的主题不熟悉。

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏

评论 1

  1. #1

    方法很好,所以我用SEO插件。

    奶爸建网站笔记2个月前 (04-27)回复
×

请作者吃根烤肠!

支付宝