最新公告
  • 欢迎您光临站长源码网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • WordPress不同分类使用不同的文章模板

    正文概述 管理员   2024-09-02   9

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

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

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

    /**
    * 不同分类使用不同的文章模板
    * From https://www.zhann.cn/notes/86.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';
            }elseif(file_exists(SINGLE_PATH . '/single.php')){
                return SINGLE_PATH . '/single.php';
            }
    	endforeach;
    }
    //通过 single_template 钩子挂载函数
    add_filter('single_template', 'wpdaxue_single_template');

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

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

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

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

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

    in_category(2)

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

    in_category('themes')

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

    in_category( array( 2,3,7) )

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

    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' );
    }
    ?>

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


    站长源码网 » WordPress不同分类使用不同的文章模板

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    支付宝支付
    余额支付
    ×
    微信扫码支付 0 元