あるカテゴリから投稿のリストを取得し、そのカテゴリのすべての投稿のタイトルとパーマリンクをエコーしますが、現在の投稿がそのリストにある場合はパーマリンクと投稿名を除外します。
それはループの後または内側でsingle.phpに表示されます。
それが可能であるかどうか誰でも知っています、もしそうならどのように?
前もって感謝します
<?php query_posts('category_name=MyCatName&showposts=-1'); ?>
<?php while (have_posts()) : the_post(); ?>
<a href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a>
<?php endwhile; ?>
最初に、カスタムループは二次ループ/クエリなので、query_posts()
の代わりに WP_Query
クラスを使うべきです。 なぜ読んでください 。
それが言われている、
/* main post's ID, the below line must be inside the main loop */
$exclude = get_the_ID();
/* alternatively to the above, this would work outside the main loop */
global $wp_query;
$exclude = $wp_query->post->ID;
/* secondary query using WP_Query */
$args = array(
'category_name' => 'MyCatName', // note: this is the slug, not name!
'posts_per_page' => -1 // note: showposts is deprecated!
);
$your_query = new WP_Query( $args );
/* loop */
echo '<ul>';
while( $your_query->have_posts() ) : $your_query->the_post();
if( $exclude != get_the_ID() ) {
echo '<li><a href="' . get_permalink() . '">' .
get_the_title() . '</a></li>';
}
endwhile;
echo '</ul>';
そうするだろう。
Johannesのコードに基づいていますが、引数post__not_in
を使用しています。
/* Secondary query using WP_Query */
$wpse63027_posts = new WP_Query( array(
'category_name' => 'MyCatName',
'posts_per_page' => -1,
'post__not_in' => array( get_queried_object_id() ), // Exclude current post ID (works outside the loop)
) );
その後、新しい投稿をループすることができます。
if ( $wpse63027_posts->have_posts() )
{
while( $wpse63027_posts->have_posts() )
{
$wpse63027_posts->the_post();
// Now do everything you want with the default API calls
// Example
the_title( '<h2>', '</h2>', true );
the_content();
}
}