!
也想出现在这里? 联系我们
广告位

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

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

方法一:

有个更简单的方法,安装 Custom Category Templates 插件。启用插件后,在编辑分类时会添加一个选择模板的选项。制作几个不同布局风格的页面模板,模板头部必须有类似的标识:

  1. <?php
  2. /*
  3. Template Name: 模板A
  4. */

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

方法二:

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

  1. // 分类选择模板
  2. class Select_Category_Template{
  3. public function __construct() {
  4. add_filter( 'category_template', array($this,'get_custom_category_template' ));
  5. add_action ( 'edit_category_form_fields', array($this,'category_template_meta_box'));
  6. add_action( 'category_add_form_fields', array( &$this, 'category_template_meta_box') );
  7. add_action( 'created_category', array( &$this, 'save_category_template' ));
  8. add_action ( 'edited_category', array($this,'save_category_template'));
  9. do_action('Custom_Category_Template_constructor',$this);
  10. }
  11. // 添加表单到分类编辑页面
  12. public function category_template_meta_box( $tag ) {
  13. $t_id = $tag->term_id;
  14. $cat_meta = get_option( "category_templates");
  15. $template = isset($cat_meta[$t_id]) ? $cat_meta[$t_id] : false;
  16. ?>
  17. <tr class="form-field">
  18. <th scope="row" valign="top"><label for="cat_Image_url"><?php _e('Category Template'); ?></label></th>
  19. <td>
  20. <select name="cat_template" id="cat_template">
  21. <option value='default'><?php _e('Default Template'); ?></option>
  22. <?php page_template_dropdown($template); ?>
  23. </select>
  24. <br />
  25. <span class="description"><?php _e('为此分类选择一个模板'); ?></span>
  26. </td>
  27. </tr>
  28. <?php
  29. do_action('Custom_Category_Template_ADD_FIELDS',$tag);
  30. }
  31. // 保存表单
  32. public function save_category_template( $term_id ) {
  33. if ( isset( $_POST['cat_template'] )) {
  34. $cat_meta = get_option( "category_templates");
  35. $cat_meta[$term_id] = $_POST['cat_template'];
  36. update_option( "category_templates", $cat_meta );
  37. do_action('Custom_Category_Template_SAVE_FIELDS',$term_id);
  38. }
  39. }
  40. // 调用所有页面模板
  41. function get_custom_category_template( $category_template ) {
  42. $cat_ID = absint( get_query_var('cat') );
  43. $cat_meta = get_option('category_templates');
  44. if (isset($cat_meta[$cat_ID]) && $cat_meta[$cat_ID] != 'default' ){
  45. $temp = locate_template($cat_meta[$cat_ID]);
  46. if (!empty($temp))
  47. return apply_filters("Custom_Category_Template_found",$temp);
  48. }
  49. return $category_template;
  50. }
  51. }
  52. $cat_template = new Select_Category_Template();

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress用代码实现自定义文章标题颜色

2023-12-28 10:07:32

WordPress教程

代码实现验证WordPress用户注册邮箱真实性

2023-12-28 10:08:09

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索