is_page和query_posts无法正常工作

时间:2014-04-04 02:30:21

标签: php wordpress

由于某种原因,以下代码使用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;
?>

4 个答案:

答案 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;