2012-09-04 72 views
0

我創建了兩種不同的自定義帖子類型:「視頻」和「位置」。
然後我創建了一個名爲「Video_Categories」的自定義分類。
我已將此自定義分類法分配給兩種自定義帖子類型。如何顯示來自相關自定義分類標準的自定義帖子

我想要做的是在地點上顯示具有相同術語的視頻。

例如:

視頻的帖子:

  • 名稱:視頻1; Video_Category:昆士蘭布里斯班;
  • 姓名:視頻2; Video_Category:昆士蘭州黃金海岸;
  • 產品名稱:視頻3; Video_Category:昆士蘭陽光海岸;

位置後:

  • 名稱:布里斯班; Video_Category:布里斯班;

我想從位置頁面創建一個查詢,查看此帖子的分類並返回具有相同分類的視頻帖子。

在上例中,「視頻1」視頻帖子將被返回並顯示在位置頁面上。

回答

2

好問題,這與獲取相關類別或標籤有點不同,但仍使用類似的前提。有幾種方法可以做到這一點,但最簡單的方法之一可能是使用利用WP_Query的自定義函數。將以下代碼添加到您的functions.php文件中。

// Create a query for the custom taxonomy 
function related_posts_by_taxonomy($post_id, $taxonomy, $args=array()) { 
    $query = new WP_Query(); 
    $terms = wp_get_object_terms($post_id, $taxonomy); 

    // Make sure we have terms from the current post 
    if (count($terms)) { 
     $post_ids = get_objects_in_term($terms[0]->term_id, $taxonomy); 
     $post = get_post($post_id); 
     $post_type = get_post_type($post); 

     // Only search for the custom taxonomy on whichever post_type 
     // we AREN'T currently on 
     // This refers to the custom post_types you created so 
     // make sure they are spelled/capitalized correctly 
     if (strcasecmp($post_type, 'locations') == 0) { 
      $type = 'videos'; 
     } else { 
      $type = 'locations'; 
     } 

     $args = wp_parse_args($args, array(
       'post_type' => $type, 
       'post__in' => $post_ids, 
       'taxonomy' => $taxonomy, 
       'term' => $terms[0]->slug, 
      )); 
     $query = new WP_Query($args); 
    } 

    // Return our results in query form 
    return $query; 
} 

顯然,您可以更改此功能中的任何內容以獲得您正在查找的確切結果。看看http://codex.wordpress.org/Class_Reference/WP_Query作進一步參考。

有了這個功能,您現在可以訪問related_posts_by_taxonomy()函數,您可以在其中傳遞要查找相關帖子的任何分類。因此,在您single.php或正在使用您的自定義文章類型,你可以不喜歡以下哪個模板:

<h4>Related Posts</h3> 
<ul> 
<?php $related = related_posts_by_taxonomy($post->ID, 'Video_Categories'); 
    while ($related->have_posts()): $related->the_post(); ?> 
     <li><?php the_title(); ?></li> 
    <?php endwhile; ?> 
</ul> 
+0

嗨@dpcasady, 我已經加入此功能,並稱之爲從single.php中頁,它回來了: 「致命錯誤:不能使用WP_Error類型的對象作爲數組」。 它指定此行作爲問題: 「$ post_ids = get_objects_in_term($ terms [0] - > term_id,$ taxonomy);」 –

+0

這意味着您正在嘗試使用不存在的分類。您確定您註冊的自定義分類稱爲'Video_Categories'嗎?也許它的'Video_Category'? – dpcasady

+0

你是對的,我不得不刪除「Video_Category」中的大寫字符,以使其正常工作。看起來像我想要的那樣工作。謝謝你的幫助! :) –

相關問題