當前位置:首頁>WordPress建站>基礎教程>WordPress不同分類使用不同的文章模板

WordPress不同分類使用不同的文章模板

2020年6月更新:部分朋友反饋下面的方法可能會存在一些問題,比如有些文章會跳轉(zhuǎn)到首頁,這個問題目前沒有時間去檢查和修復,而且,不再推薦采用這個方式了。大家可以采用WordPress內(nèi)置的文章模板功能來實現(xiàn),可以在發(fā)布文章的時候,手動選擇要使用的模板文件,具體實現(xiàn)方案請看:http://www.ydqwiac.cn/wordpress-adds-custom-templates-for-articles-and-custom.html

倡萌昨天分享的 Custom Post Template 和 Single Post Template 可以讓你自定義每篇文章的文章模板,今天來說說WordPress不同分類使用不同的文章模板。

方法一:根據(jù)模板文件名進行判斷

1.將下面的代碼添加到當前主題的 functions.php 文件:

/**
* 不同分類使用不同的文章模板
* From http://www.ydqwiac.cn/custom-single-post-template.html
*/
//定義模板文件所在目錄為 single 文件夾
define("SINGLE_PATH", TEMPLATEPATH . '/single');
//自動選擇模板的函數(shù)
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 鉤子掛載函數(shù)
add_filter('single_template', 'wpdaxue_single_template');

2.在當前主題的根目錄創(chuàng)建一個名為 single 的文件夾,然后根據(jù)不同分類創(chuàng)建不同的文件,命名格式為 single-cat-[分類別名或ID].php。請記得為所有分類創(chuàng)建自己的模板文件。

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() 函數(shù)可以通過分類別名或ID判斷當前文章所屬的分類,而且可以直接在循環(huán)(Loop)內(nèi)部和外部使用。

如果是單個分類 ID ,比如ID 為 2 ,可以這樣寫

in_category(2)

如果是單個分類別名,比如別名為 themes,可以這樣寫

in_category('themes')

如果是多個ID,可以這樣寫

in_category( array( 2,3,7) )

如果是多個別名,可以這樣寫

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

然后我們結(jié)合 if 語句就可以很好地實現(xiàn)模板的選擇。比如我們可以在主題的根目錄創(chuàng)建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' );
}
?>

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

聲明:本站所有文章,如無特殊說明或標注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關(guān)注WordPress大學公眾號 WPDAXUE
基礎教程

WordPress自定義文章模板插件:Custom Post Template

2013-7-6 8:40:00

基礎教程

WordPress小工具顯示設置插件:Simple Widgets

2013-7-9 8:15:00

27 條回復 A文章作者 M管理員
?
個人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

丰宁| 禄丰县| 江孜县| 尉犁县| 万全县| 景洪市| 怀来县| 方城县| 临城县| 东辽县| 遵化市| 和林格尔县| 尖扎县| 辽中县| 静乐县| 平罗县| 长寿区| 凤阳县| 抚远县| 双柏县| 阿鲁科尔沁旗| 泾阳县| 阿克陶县| 怀来县| 鹿邑县| 牟定县| 威宁| 普兰店市| 保康县| 壶关县| 上思县| 任丘市| 霞浦县| 九龙城区| 张北县| 宝应县| 保靖县| 新竹县| 长沙县| 青铜峡市| 湖州市|