2010-07-28 66 views
7

我有一個分類,taxonomy.php頁面,需要看起來像這樣:WordPress的 - 項自定義後類型房源的自定義分類頁

自定義文章類型標題(資源)

自定義分類1 (資源類型)

資源類型期限1(白皮書)

  • 白皮書後1

    白皮書柱2

    白皮書柱3

資源類型期限2(畫)

  • 畫張貼1

    畫張貼2

    視頻信息3

試圖理解Wordpress 3.0的所有新文檔,但它只是讓我更加困惑,因爲它似乎與2.8混合在一起。

+0

對不起,有點困惑 - 所以你想列出所有的自定義職位類型,按自定義稅率分類? – TheDeadMedic 2010-07-29 13:54:10

+1

我想列出自定義帖子類型的所有帖子,按自定義分類術語排序。 – manon1165 2010-08-16 21:35:19

回答

1

嘿manon1165,我其實剛剛完成了這個。是一個巨大的痛苦,希望我的代碼片段將幫助!

我做了一個自定義頁面模板。並沒有沿着

<?php $categories = get_terms('taxonomy-name', 'orderby=name&hide_empty=0'); $cats = object_to_array($categories); ?> 

線的東西現在,只需print_r($cats),你會看到類別的陣列。

您將需要將對象轉換爲數組,我這樣做。

function object_to_array($data) 
{ 
    if(is_array($data) || is_object($data)) 
    { 
    $result = array(); 
    foreach($data as $key => $value) 
    { 
     $result[$key] = object_to_array($value); 
    } 
    return $result; 
    } 
    return $data; 
} 

我做

​​

希望幫助!

+0

謝謝,它幫助很多,但你能告訴我如何從自定義帖子類型中獲取內容。我正在使用自定義帖子類型插件,並希望使用自定義類別列表獲取數據。請幫幫我。 – 2013-05-17 11:05:16

+0

在過去幾年中,我並沒有真正處理WP。也許開始一個新的問題? – LostInQuery 2013-06-05 19:56:55

6

沒有必要將對象轉換爲數組,您可以完美地使用對象而不會太麻煩。什麼是(至少對我來說)好奇的是,你得到的東西是這樣的:

Array 
    (
     [0] => stdClass Object 
      (
       [term_id] => 7 
       [name] => Magister comunicaciones aplicadas 
       [slug] => magister-comunicaciones-aplicadas 
       [term_group] => 0 
       [term_taxonomy_id] => 7 
       [taxonomy] => linea-de-estudio 
       [description] => 
       [parent] => 0 
       [count] => 4 
     ) 

     [1] => stdClass Object 
      (
       [term_id] => 8 
       [name] => Engagement marketing 
       [slug] => engagement-marketing 
       [term_group] => 0 
       [term_taxonomy_id] => 8 
       [taxonomy] => linea-de-estudio 
       [description] => 
       [parent] => 0 
       [count] => 5 
     ) 
) 

它基本上,對象的數組,因此你對待他們的方式。例如,如果我想在第一個的名字:

$myterms = get_terms('taxonomy-name', 'orderby=none&hide_empty');  
echo $myterms[0]->name; 

如果您需要通過元素迭代,你仍然可以使用foreach();

foreach ($myterms as $term) { ?> 
    <li><a href="<?php echo $term->slug; ?>"><?php echo $term->name; ?></a></li> <?php 
} ?> 

這樣你就可以從你的分類中發表文章。

對於自定義文章類型,你必須創建一個循環是這樣的:

$args = array(
    'post_type' => 'post-type-name', 
    'taxonomy' => 'term' 
    //for example 
    //'resources' => 'videos' 
); 

// assigning variables to the loop 
global $wp_query; 
$wp_query = new WP_Query($args); 

// starting loop 
while ($wp_query->have_posts()) : $wp_query->the_post(); 

the_title(); 
blabla.... 

endwhile; 

然後您可以創建一個每個每個分類/學期:)的多個循環。你可以在第一個循環中包含第二個循環,並將變量分配給分類(資源ie)和它所擁有的術語(如果你想要變得更加花哨(不想重複自己一百次)視頻)(從你的例子只有最後一個)。這個想法是,你將有一個正常的(典型的)wordpress循環,每個術語都限制爲自定義後期類型

foreach ($myterms as $term) : ?> 
    <li><a href="<?php echo $term->slug; ?>"><?php echo $term->name; ?></a></li> <?php 

     $term_name = $term->slug; 

     $args = array(
     'post_type' => 'post-type-name', 
     'taxonomy' => "$term_name" 
     ); 

    // assigning variables to the loop 
    global $wp_query; 
    $wp_query = new WP_Query($args); 

    // starting loop posting only 
    while ($wp_query->have_posts()) : $wp_query->the_post(); 

    the_title(); 
    blabla.... 

    endwhile; 

endforeach; ?> 

很明顯,你可以做相反的事情太多,建立正常循環的單模板自定義類型(它的貌似只有一個),以及裏面包含了所有的自定義條款。

不是很優雅,但這是我能想出來的最佳方式:P。希望有人能夠理解這一點,聽起來很混亂。

也許可以用一些回調函數嗎?

+0

您在上次的代碼示例中有錯誤。你應該刪除;從該行的末尾開始:'taxonomy'=>「$ term_name」; – Pascut 2014-03-13 10:29:57

+0

更正。謝謝 :)。 – 2014-03-13 20:06:29

相關問題