wordpress根據文章分類調用不同文章模板的幾種方法

假如你做了一個個人WP博客,裏面有幾個分類,比如技術類,日記類,圖片類,你又不想讓這些文章使用同一個模板,那麼下面的文章對你有幫助,網上介紹了很多方法,通過小編測試,以下方法較爲通用,你完全放心嘗試。當然下面的文章還介紹了調用不同的分類文章列表,其實最主要的是函數:is_category(), in_category()的使用技巧。

根據分類別名調用不同的文章模板

方法一
第一步:建立一個single.php文件,如果你的模板目錄已經有這個文件,將 single.php 裏面除了 get_header(); get_footer(); get_sidebar(); 之外的所有內容改成

<?php 
if(in_category('article') {
    include(TEMPLATEPATH . '/single-article.php');
} 
else {
    include(TEMPLATEPATH . '/single-default.php');
} 
?>

articlewp後臺分類目錄中分類的別名
上面代碼的意思就是,判斷文章是否屬於article的分類,如果是就調用single-article.php的文章模板,默認調用article的文章模板,否則就調用single-default.php模板。

那麼你根據自己的需要建立single-article.php模板和single-default.php模板就可以了!
方法二來自百度

第一步 :在 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');

第二:在當前主題的根目錄創建一個名爲 single 的文件夾,然後根據不同分類創建不同的文件,命名格式爲 single-cat-[分類別名或ID].php。請記得爲所有分類創建自己的模板文件。例如,那就可以命名爲 single-cat-themes.php 或 single-cat-2.php 。這樣,只要是WordPress主題這個分類,就會自動選擇 single-cat-themes.php 或 single-cat-2.php 作爲這個分類的文章模板。

WordPress不同分類下的文章使用不同文章樣式:

WordPress不同分類下的文章使用不同文章模板樣式實現的方法和上面說到的方法二的原理是一樣的,只不過使用的函數不是is_category ,而是 in_category 。
例一:
同樣我們要根據需要創建兩個以上的文章模板樣式,比如single1.php、single2.php和single3.php,然後在single.php通過in_category 判斷代碼來實現自己需要的效果。

比如要實現id爲8、9、10三個分類下的文章使用single1.php樣式,id爲1、2、3的分類下的文章使用single2.php樣式,其餘使用single3.php樣式!首先,複製三個single.php文件分別取名爲“single1.php”、“single2.php”和“single3.php”,然後,把原先的single.php文件裏面的內容全部刪除,並用下面的代碼進行替換:

<?php
if ( in_category(array(8,9,10)) ) {
   include(TEMPLATEPATH . '/single1.php');
 }
 elseif ( in_category(array(1,2,3))){
   include(TEMPLATEPATH . '/single2.php');
 }
 else {
   include(TEMPLATEPATH . '/single3.php');
 }
?>

例二:
在主題的根目錄創建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' );
}
?>

總結

1、方法一如果要實現多個分類列表調用同一個列表模板樣式,就需要創建多個文件,顯然不方便。強烈推薦方法二!!!
2、分類頁判斷分類用is_category(), 內容頁判斷分類需用in_category()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章