由于某种原因,以下代码使用query_posts
显示两种类型的帖子,而不仅仅显示指定的帖子。我不太清楚发生了什么,但似乎循环忽略了is_page('news')
或is_page('othernews').
的条件。是否有人知道为什么会出现这种情况?
<?php
if (is_page('news')) :
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('news');
endif;
if (is_page('othernews')) :
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('my-other-news'); ?>
endif;
while (have_posts()) : the_post();
get_template_part( 'part-post');
endwhile;
?>
答案 0 :(得分:1)
您的条件声明不正确。如果你需要其中一个,你需要做这样的事情
if(is_page('news')) {
<--- do something for news --->
}elseif(is_page('othernews')) {
<---do something for othernews--->
}
请恳请,不要使用query_posts
,这是邪恶的。而是使用WP_Query
答案 1 :(得分:1)
试试这是否适合您,
<?php
if (is_page('news')) :
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$query = WP_query(array('post_type' => 'news');
else if (is_page('othernews')) :
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$query = WP_query(array('post_type' => 'other-news'));
else
$query = WP_query(array('post_type' => 'post'));
endif;
while ($query->have_posts()) : $query->the_post();
get_template_part( 'part-post');
endwhile;
?>
如果前两个条件都不满足,则最后一个条件是处理。因此,如果您不需要,可以将其删除。
希望这会对你有所帮助。
答案 2 :(得分:0)
<?php
if (is_page('news')) {
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('news');
}
if (is_page('othernews')) {
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('my-other-news'); }
?>
<?php while (have_posts()) : the_post(); ?>
<?php get_template_part( 'part-post'); ?>
<?php endwhile; ?>
如果您简化上述代码,这有帮助吗?似乎是那里有很多不必要的php标签。
答案 3 :(得分:0)
如果您需要单独查询特定页面帖子,则意味着您需要在查询中指定帖子ID和帖子类型名称
query_posts('p=postid&&post_type=posttypename');
或者,如果您需要查询帖子类型下的所有帖子,请使用此
if (is_page('research-2')) :
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('post_type=research');
endif;
if (is_page('issues')) :
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('post_type=studies');
endif;
while (have_posts()) : the_post();
the_title();
endwhile;