zoukankan      html  css  js  c++  java
  • WordPress不同分类使用不同的文章模板

    方法一:根据模板文件名进行判断

    1.将下面的代码添加到当前主题的 functions.php 文件:

    1. /**
      * 不同分类使用不同的文章模板
      * From http://www.wpdaxue.com/custom-single-post-template.html
      */
      //定义模板文件所在目录为 single 文件夹
      define(SINGLE_PATH, TEMPLATEPATH . '/single');
      //自动选择模板的函数
      function wpdaxue_single_template($single) {
          global $wp_query, $post;
          //通过分类别名或ID选择模板文件
          foreach((array)get_the_category() as $cat) :
              if(file_exists(SINGLE_PATH . '/single-cat-' . $cat->slug . '.php'))
                  return SINGLE_PATH . '/single-cat-' . $cat->slug . '.php';
              elseif(file_exists(SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php'))
                  return SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php';
          endforeach;
      }
      //通过 single_template 钩子挂载函数
      add_filter('single_template', 'wpdaxue_single_template');

    2.在当前主题的根目录创建一个名为 single 的文件夹,然后根据不同分类创建不同的文件,命名格式为 single-cat-[分类别名或ID].php。请记得为所有分类创建自己的模板文件。

    custom-single-post-template-wpdaxue_com

    例如WordPress大学的”WordPress主题“这个分类的别名为”themes“,ID 为 2,那就可以命名为 single-cat-themes.php 或 single-cat-2.php 。这样,只要是WordPress主题这个分类,就会自动选择 single-cat-themes.php 或 single-cat-2.php 作为这个分类的文章模板。

    方法二:使用 in_category() 进行判断

    in_category() 函数可以通过分类别名或ID判断当前文章所属的分类,而且可以直接在循环(Loop)内部和外部使用。

    如果是单个分类 ID ,比如ID 为 2 ,可以这样写

    1. in_category(2)

    如果是单个分类别名,比如别名为 themes,可以这样写

    1. in_category('themes')

    如果是多个ID,可以这样写

    1. in_category( array( 2,3,7) )

    如果是多个别名,可以这样写

    1. in_category( array( 'themes','plugins','develop') )

    然后我们结合 if 语句就可以很好地实现模板的选择。比如我们可以在主题的根目录创建3个文章模板文件,分别命名为 single001.php , single002.php 和 single003.php,然后我们希望 ID 为 2 和 3 的分类使用 single001.php,ID为 7 的分类使用 single002.php ,其他分类使用 single003.php,那么,我们可以在 single.php 文件写入下面的代码:

    1. <?php 
      if ( in_category(array( 2,3 )) ) {
          get_template_part('single001' );
      } elseif ( in_category( 7 )) {
          get_template_part('single002' );
      } else {
          get_template_part('single003' );
      }
      ?>

    好了,例子就说到这里,只要大家明白了其中的原理,就可以应用自如了。

  • 相关阅读:
    雷林鹏分享:Lua 运算符
    雷林鹏分享:PHP JSON
    不要提交代码到HEAD上
    Mr Cao 的提问
    使用masory
    git 下载单个文件 已经添加多个远程服务器
    自动生产jason的工具
    简单的应用可以用storyBoard
    《创业维艰》
    造成死锁的各种情况
  • 原文地址:https://www.cnblogs.com/lydbk/p/4609629.html
Copyright © 2011-2022 走看看