タイトルが言っているように、特定のタグを持つ投稿のみを表示するように、ワードプレスのページにはどのようなコードを使用しますか。
私は、new WP_Query()
がquery_posts
よりも推奨されることをここで常に読んでいると確信しています。さらに、 Transient API を使用して、追加のクエリのパフォーマンスを向上させることができます。リストを表示したい場所にテンプレートを配置します。
// Get any existing copy of our transient data
if ( false === ( $my_special_tag = get_transient( 'my_special_tag' ) ) ) {
// It wasn't there, so regenerate the data and save the transient
// params for our query
$args = array(
'tag' => 'foo'
'posts_per_page' => 5,
);
// The Query
$my_special_tag = new WP_Query( $args );
// store the transient
set_transient( 'my_special_tag', $my_special_tag, 12 * HOUR_IN_SECONDS );
}
// Use the data like you would have normally...
// The Loop
if ( $my_special_tag ) :
echo '<ul class="my-special-tag">';
while ( $my_special_tag->have_posts() ) :
$my_special_tag->the_post();
echo '<li>' . get_the_title() . '</li>';
endwhile;
echo '</ul>';
else :
echo 'No posts found.';
endif;
/* Restore original Post Data
* NB: Because we are using new WP_Query we aren't stomping on the
* original $wp_query and it does not need to be reset.
*/
wp_reset_postdata();
そしてあなたのfunction.phpの中で、あなたはものが更新されたときに一時的なものをクリアする必要があるでしょう:
// Create a function to delete our transient when a post is saved or term is edited
function delete_my_special_tag_transient( $post_id ) {
delete_transient( 'my_special_tag' );
}
add_action( 'save_post', 'delete_my_special_tag_transient' );
add_action( 'edit_term', 'delete_my_special_tag_transient' );
ループの前に、query_posts関数を使用してください。
query_posts( 'tag=foo' );
これにより、割り当てられたタグを持つすべての投稿が返されます。
<?php
// retrieve post with the tag of foo
query_posts( 'tag=foo' );
// the Loop
while (have_posts()) : the_post();
the_content( 'Read the full post »' );
endwhile;
?>
複数のタグを含む投稿を返すためにも使用できます。
query_posts( 'tag=foo,bike' );
その他のパラメータと参照については、 http://codex.wordpress.org/Class_Reference/WP_Query#Parametershttp://codex.wordpress.org/Function_Reference/query_posts を参照してください。