好問題,這與獲取相關類別或標籤有點不同,但仍使用類似的前提。有幾種方法可以做到這一點,但最簡單的方法之一可能是使用利用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>
嗨@dpcasady, 我已經加入此功能,並稱之爲從single.php中頁,它回來了: 「致命錯誤:不能使用WP_Error類型的對象作爲數組」。 它指定此行作爲問題: 「$ post_ids = get_objects_in_term($ terms [0] - > term_id,$ taxonomy);」 –
這意味着您正在嘗試使用不存在的分類。您確定您註冊的自定義分類稱爲'Video_Categories'嗎?也許它的'Video_Category'? – dpcasady
你是對的,我不得不刪除「Video_Category」中的大寫字符,以使其正常工作。看起來像我想要的那樣工作。謝謝你的幫助! :) –