为WordPress分类添加选择不同模板选项

知更鸟
知更鸟
知更鸟
1632
文章
6929
评论
2019年4月18日10:58:3072.9K3

我们有时会根据分类的内容,想让不同的分类以不同的样式展示。通常的方法是在当前主题根目录中多建几个不同布局样式的分类模板,比如category-1.php、category-2.php、category-3.php.....,后面的数字是对应该的分类ID号,或者使用is_category()函数添加判断,操作有些繁琐。有个更简单的方法,安装 Custom Category Templates 插件。

启用插件后,在编辑分类时会添加一个选择模板的选项。

制作几个不同布局风格的页面模板,模板头部必须有类似的标识:

<?php
/*
Template Name: 模板A
*/

然后在编辑或者添加分类时,为不同的分类选择专用的模板即可。

效果如图:

为WordPress分类添加选择不同模板选项

 

下面是从 Custom Category Templates 插件中提取出来的代码,可以直接添加到当前主题函数模板functions.php中即可。

代码版:

展开隐藏

// 分类选择模板
class Select_Category_Template{
	public function __construct() {
		add_filter( 'category_template', array($this,'get_custom_category_template' ));
		add_action ( 'edit_category_form_fields', array($this,'category_template_meta_box'));
		add_action( 'category_add_form_fields', array( &$this, 'category_template_meta_box') );
		add_action( 'created_category', array( &$this, 'save_category_template' ));
		add_action ( 'edited_category', array($this,'save_category_template'));
		do_action('Custom_Category_Template_constructor',$this);
	}

	// 添加表单到分类编辑页面
	public function category_template_meta_box( $tag ) {
		$t_id = $tag->term_id;
		$cat_meta = get_option( "category_templates");
		$template = isset($cat_meta[$t_id]) ? $cat_meta[$t_id] : false;
		?>
		<tr class="form-field">
			<th scope="row" valign="top"><label for="cat_Image_url"><?php _e('Category Template'); ?></label></th>
			<td>
				<select name="cat_template" id="cat_template">
					<option value='default'><?php _e('Default Template'); ?></option>
					<?php page_template_dropdown($template); ?>
				</select>
				<br />
				<span class="description"><?php _e('为此分类选择一个模板'); ?></span>
			</td>
		</tr>
		<?php
		do_action('Custom_Category_Template_ADD_FIELDS',$tag);
	}

	// 保存表单
	public function save_category_template( $term_id ) {
		if ( isset( $_POST['cat_template'] )) {
			$cat_meta = get_option( "category_templates");
			$cat_meta[$term_id] = $_POST['cat_template'];
			update_option( "category_templates", $cat_meta );
			do_action('Custom_Category_Template_SAVE_FIELDS',$term_id);
		}
	}

	// 处理选择的分类模板
	function get_custom_category_template( $category_template ) {
		$cat_ID = absint( get_query_var('cat') );
		$cat_meta = get_option('category_templates');
		if (isset($cat_meta[$cat_ID]) && $cat_meta[$cat_ID] != 'default' ){
			$temp = locate_template($cat_meta[$cat_ID]);
			if (!empty($temp))
				return apply_filters("Custom_Category_Template_found",$temp);
		}
		return $category_template;
	}
}

$cat_template = new Select_Category_Template();

 

weinxin
版权声明
本站原创文章转载请注明文章出处
WordPress 删除xmlrpc.php防DDOS攻击 WordPress

WordPress 删除xmlrpc.php防DDOS攻击

可能很多WordPress用户都不知道这个xmlrpc.php是什么,简单地说就是Wordpress 为手机等客户端提供的接口文件,早期的Wordpress 这个接口就是个万恶之源,虽然经过多次的升级...
WordPress 5.6.1 维护更新 WordPress

WordPress 5.6.1 维护更新

WordPress 5.6.1 维护更新,修复20个错误及7个区块编辑器问题,无安全更新,中文版同期发布。 看了一下更新日志,只有少数几个程序的错误,基本都是修正默认主题的错误。 该版本是一个短周期维...
登录用户显示不同的 WordPress 菜单 WordPress

登录用户显示不同的 WordPress 菜单

如果让登录用户与未登录浏览者,显示不同的菜单,可以通过下面的代码实现: 登录用户显示不同的 WordPress 菜单 将下面代码添加到当前主题函数模板functions.php中: if( is_us...
手动开启WordPress站点维护模式 WordPress

手动开启WordPress站点维护模式

在更新程序或插件中,WordPress前端会显示处于维护模式,如果想临时启用维护模式,让用户知道你的站点在维护中,可以通过下面的代码实现。 开启WordPress站点维护模式 将下面代码添加到当前主题...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:7   其中:访客  7   博主  0
    • boke112导航 boke112导航 4

      这个功能不错,非常适合不用分类显示不同模板,而且操作简单,值得拥有

      • 知识共享网 知识共享网 0

        知更鸟模板真的不错,加油

        • 最佳损友 最佳损友 2

          老大,能不能在编辑TAGS时添加选择不同模板选项?

          • 91优惠券 91优惠券 2

            可以可以

            • happy happy 1

              想问下,我用的sg云主机,后台直接登的,怎么安装,找不到什么后台文件哇

                • happy happy 1

                  @ happy 啊,我找到了,可是为啥我插件安装完,文件复制完,分类页面也没有显示出可以选择模板的框框哇,求解答,卡在这里很久了 :cry: