WordPress分类目录自定义标题和描述全代码实现利于SEO

wordpress默认的分类页面的标题就是分类的标题,这个对于SEO并不是很好,很多时候我们需要自定义分类页面的标题和描述,如图中的效果

WordPress分类目录自定义标题和描述全代码实现利于SEO

代码已经写好,将下面的代码放进functions.php中

<?php
 
class Ludou_Tax_Image{
 
    function __construct(){
 
        // 新建分类页面添加自定义字段输入框
        add_action( 'category_add_form_fields', array( $this, 'add_tax_image_field' ) );
        // 编辑分类页面添加自定义字段输入框
        add_action( 'category_edit_form_fields', array( $this, 'edit_tax_image_field' ) );
 
        // 保存自定义字段数据
        add_action( 'edited_category', array( $this, 'save_tax_meta' ), 10, 2 );
        add_action( 'create_category', array( $this, 'save_tax_meta' ), 10, 2 );
 
 
    } // __construct
 
    /**
     * 新建分类页面添加自定义字段输入框
     */
    public function add_tax_image_field(){
    ?>
 
        <div class="form-field">
            <label for="term_meta[tax_biaoti]">分类标题</label>
            <input type="text" name="term_meta[tax_biaoti]" id="term_meta[tax_biaoti]" value="" />
            <p class="description">输入分类标题</p>
        </div>
 
        <!-- TODO: 在这里追加其他自定义字段表单,如下面的分类描述的代码-->
 
 
        <div class="form-field">
            <label for="term_meta[tax_description]">分类描述</label>
            <input type="text" name="term_meta[tax_description]" id="term_meta[tax_description]" value="" />
            <p class="description">输入分类描述</p>
        </div>
 
    <?php
    } // add_tax_image_field
 
    /**
     * 编辑分类页面添加自定义字段输入框
     *
     * @uses get_option()       从option表中获取option数据
     * @uses esc_url()          确保字符串是url
     */
    public function edit_tax_image_field( $term ){
 
        // $term_id 是当前分类的id
        $term_id = $term->term_id;
 
        // 获取已保存的option
        $term_meta = get_option( "ludou_taxonomy_$term_id" );
        // option是一个二维数组
 
        $biaoti = $term_meta['tax_biaoti'] ? $term_meta['tax_biaoti'] : '';
 
         //  TODO: 在这里追加获取其他自定义字段值,如获取分类描述的代码
            $description = $term_meta['tax_description'] ? $term_meta['tax_description'] : '';
 
    ?>
 
         <tr class="form-field">
            <th scope="row">
                <label for="term_meta[tax_biaoti]">分类标题</label>
                <td>
                    <input type="text" name="term_meta[tax_biaoti]" id="term_meta[tax_biaoti]" value="<?php echo $biaoti; ?>" />
                    <p class="description">分类标题</p>
                </td>
            </th>
        </tr>
 
        <!-- TODO: 在这里追加其他自定义字段表单,如下面分类描述的代码-->
        <tr class="form-field">
            <th scope="row">
                <label for="term_meta[tax_description]">分类描述</label>
                <td>
                    <input type="text" name="term_meta[tax_description]" id="term_meta[tax_description]" value="<?php echo $description; ?>" />
                    <p class="description">输入描述</p>
                </td>
            </th>
        </tr>
 
 
    <?php
    } // edit_tax_image_field
 
    /**
     * 保存自定义字段的数据
     *
     * @uses get_option()      从option表中获取option数据
     * @uses update_option()   更新option数据,如果没有就新建option
     */
    public function save_tax_meta( $term_id ){
 
        if ( isset( $_POST['term_meta'] ) ) {
 
            // $term_id 是当前分类的id
            $t_id = $term_id;
            $term_meta = array();
 
 
              $term_meta['tax_biaoti'] = isset ( $_POST['term_meta']['tax_biaoti'] ) ? $_POST['term_meta']['tax_biaoti'] : '';
 
             //  TODO: 在这里追加获取其他自定义字段表单的值,如分类描述的代码
              $term_meta['tax_description'] = isset ( $_POST['term_meta']['tax_description'] ) ? $_POST['term_meta']['tax_description'] : '';
 
 
            // 保存option数组
            update_option( "ludou_taxonomy_$t_id", $term_meta );
 
        } // if isset( $_POST['term_meta'] )
    } // save_tax_meta
 
} // Ludou_Tax_Image
 
$wptt_tax_image = new Ludou_Tax_Image();

然后在header.php中调用,加入标签前加入下面的代码,就可以实现全代码自定义分类目录的标题和描述

<?php
if(is_category() ) {    
$category = get_the_category();//默认获取当前所属分类
$term_id = $category[0]->cat_ID; //分类id
// 获取已保存的option
$term_meta = get_option( "ludou_taxonomy_$term_id" );
// 取值
$tax_biaoti = $term_meta['tax_biaoti'] ? $term_meta['tax_biaoti'] : '';
$tax_description = $term_meta['tax_description'] ? $term_meta['tax_description'] : '';
?>
<title><?php if($tax_biaoti){
		$title = $tax_biaoti.'-'.get_bloginfo("description");
}else{
	   $title=wp_title(" - ",true,"right");bloginfo("description");
}
if($paged<2){echo $title;}else{echo "$title &#8211; 第 $paged 页";}
	?></title>
<?php if($tax_description){?> <meta name="description" content="<?php echo $tax_description;?>" /> <?php }?>
 
<?php }?>

发表评论