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

    倡萌昨天分享的 Custom Post Template 和 Single Post Template 可以让你自定义每篇文章的文章模板,今天来说说WordPress不同分类使用不同的文章模板。

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

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

    /**
    * 不同分类使用不同的文章模板
    */
    //定义模板文件所在目录为 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 文件写入下面的代码:

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

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

    转载自:https://www.wpdaxue.com/custom-single-post-template.html

  • 相关阅读:
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    block的是发送信号的线程,又不是处理槽函数的线程
  • 原文地址:https://www.cnblogs.com/MY0101/p/7144884.html
Copyright © 2011-2022 走看看