wordpress分类目录和标签页同时自定义标题和描述的方法

上一篇文章我们说了《wordPress分类目录自定义标题和描述》的方法,这篇文章我们说一下wordpress的分类目录和标签页同时自定义标题和描述的方法。代码跟上一篇的类似的,感兴趣的朋友的可以自行研究一下(代码中有注释)。
我们将下面的代码插入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 );
 
    // 标签
        add_action( 'post_tag_add_form_fields', array( $this, 'add_tax_image_field' ) );
        add_action( 'post_tag_edit_form_fields', array( $this, 'edit_tax_image_field' ) );
        add_action( 'edited_post_tag', array( $this, 'save_tax_meta' ), 10, 2 );
        add_action( 'create_post_tag', 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 }
elseif(is_tag() ){
 
//获得当前TAG标签ID,
function get_current_tag_id() {
$current_tag = single_tag_title('', false);//获得当前TAG标签名称
$tags = get_tags();//获得所有TAG标签信息的数组
foreach($tags as $tag) {
if($tag->name == $current_tag) return $tag->term_id; //获得当前TAG标签ID,其中term_id就是tag ID
}
}
 
$term_id = get_current_tag_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 }?>

发表评论