web-dev-qa-db-ja.com

現在表示されている投稿と同じ分類法による最近の投稿を表示する方法を教えてください。

現在表示されている投稿と同じ分類法からの最近の投稿を表示する方法を考えています(カスタム投稿の種類とカスタム分類を使って作業する)。

それが単に通常の投稿のカテゴリである場合、それは次のようになります。

<?php global $post;
$categories = get_the_category();
foreach ($categories as $category) :
?>
<h3>More News From This Category</h3>
<ul>
<?php
$posts = get_posts('numberposts=20&category='. $category->term_id);
foreach($posts as $post) :
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
<li><strong><a href="<?php echo get_category_link($category->term_id);?>" title="View all posts filed under <?php echo $category->name; ?>">ARCHIVE FOR '<?php echo $category->name; ?>' CATEGORY &raquo;</a></strong></li>
<?php endforeach; ?>
</ul>

しかし、カスタム投稿/分類法では、別の種類の解決策が必要です。これまでのところワードプレスのコーデックスでは、有用なものは見つかりませんでした。

2
greedz

get_the_terms() を使ってみましたか?

あなたのコード例から、手っ取り早いもの、

<?php 
global $post;
$terms = get_the_terms( $post->ID, 'some-term' );
foreach ($terms as $category) :
?>
<h3>More News From This Category</h3>
<ul>
<?php
$posts = get_posts('numberposts=20&category='. $category->term_id);
foreach($posts as $post) :
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
<li><strong><a href="<?php echo get_category_link($category->term_id);?>" title="View all posts filed under <?php echo $category->name; ?>">ARCHIVE FOR '<?php echo $category->name; ?>' CATEGORY &raquo;</a></strong></li>
<?php endforeach; ?>
</ul>

the_terms() および get_the_term_list() も参照してください。

1
Chip Bennett

IDが'my-taxonomy-name'の投稿に関連付けられた用語($post_idというカスタム分類法から)を取得するには、次の手順を実行します。

$terms = get_the_terms( $post_id, 'my-taxonomy-name' );

これはtermオブジェクトの配列を返します。 ( Codex を参照してください)最初のものを選びます。$ term-slug = $ terms [0] - > slug;

そしてget_postsを使って問い合わせると、それは私たちの分類法をキーとして受け入れます。

$args = array(
   'numberposts' => 20,
   'my-taxonomy-name' =>  $term-slug 
);
$posts = get_posts ( $args );

カスタム分類法とget_postsについての コーデックスを参照してください

1
Stephen Harris