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 – 第 $paged 页";} ?></title> <?php if($tax_description){?> <meta name="description" content="<?php echo $tax_description;?>" /> <?php }?> <?php }?>