私はニュースページ(カテゴリ「ニュース」のアーカイブ)と別のブログページを持つサイトを持っています。ニュースページに投稿するときは、カテゴリ「ニュース」を選択します。そのため、ニュースページにはnewsとマークされた投稿しか表示されませんが、ブログページにはすべての投稿を表示できます。私がやりたいことは、できればブログページの「ニュース」投稿以外のすべての投稿を表示することです。どうやってこれをするの?
<!--post start-->
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<!--post start-->
<div class="post">
<div class="box">
<div class="postimgbox">
<?php if ((function_exists('has_post_thumbnail')) && (has_post_thumbnail())) { ?>
<?php the_post_thumbnail(); ?>
<?php } else {
}
?>
</div>
<ul class="post_meta">
<li class="post_date"> <?php echo get_the_time('M, d, Y') ?></li>
<li class="post_comment">
<?php comments_popup_link('No Comments.', '1 Comment.', '% Comments.'); ?>
</li>
<br />
<li class="posted_by">
<?php the_author_posts_link(); ?>
</li>
<br />
<li class="post_category">
<?php the_category(', '); ?>
</li>
<br />
</ul>
</div>
<div class="post_content">
<h1 class="post_title"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>">
<?php the_title(); ?>
</a></h1>
<?php the_excerpt(); ?>
<a class="read_more" href="<?php the_permalink() ?>"><?php _e('Read More', 'infoway'); ?> <span class="button-tip"></span></a> </div>
</div>
<!--End Post-->
上記のblog.phpからのコードは、私が編集しようとしているphpファイルですが、それが私のブログページのテンプレートになっています。
プラグインまたはあなたのテーマのfunctions.phpファイルから:
function wpse106861_mod_query( $query ) {
/* are we on the blog page ? */
if ( $query->is_home() && $query->is_main_query() ) {
/* get ID of news category */
$news_id = get_cat_ID( 'news' );
/* exclude posts in new from query */
$query->set( 'category__not_in' => array( $news_id ) );
}
}
add_action( 'pre_get_posts', 'wpse106861_mod_query' );
更新
コメントに関して:is_home
は、それが静的なページであるかあなたのフロントページであるかにかかわらず、どんなブログのインデックスページでもtrueを返すべきです。条件をわずかに変えることで、とにかく直接フロントページをチェックすることができます。
if ( $query->is_front_page() && $query->is_main_query() )
関連する読み方
pre_get_posts
filterでそれを行うことができます。これを好きですか?
function my_exclude_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( 'category__not_in', array( 1, 1347 ) ); // where 1 and 1347 are IDs of excluded categories
}
}
add_action( 'pre_get_posts', 'my_exclude_category' );
PS。このブログページはあなたの投稿ページとして設定されていると思います。