2014-04-04 78 views
1

由於某些原因,以下代碼顯示的是兩種類型的帖子,而不僅僅是使用query_posts指定的帖子。我不太清楚發生了什麼事情,但似乎循環忽略了我的條件is_page('news')is_page('othernews').有沒有人有一個想法,爲什麼這可能是這種情況?is_page和query_posts無法正常工作

<?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

您在哪個頁面發現問題。?這是你的網頁slu is是「新聞」還是「其他新聞」..?否則,你是否列出這個任何其他網頁..?如果是這樣,問題可能是它從默認的查詢帖子參數返回。 –

+0

看看鏈接來檢測他目前的頁面,這可能會有所幫助http://stackoverflow.com/questions/4837006/how-to-get-the-current-page-name-in-wordpress –

回答

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; 
?> 

最後else條件是處理如果沒有第2個條件滿足的。所以你可以刪除它,如果你沒有這個需要。

希望這可以幫助你。

+0

這確實有幫助...我認爲這是正確的方向,但是當我把它粘貼到我的代碼中時,它會打破頁面 - 我只是得到一個空白頁面。我假設這是你的代碼中的語法錯誤,因爲當我把它拿出來的時候頁面工作正常。我粘貼了現有的循環順便說一句。 – Pdnell

+1

噢對不起,我忘記關閉WP_query末尾的括號。我已經更新了上面的新代碼。請使用它。 –

+0

它仍然沒有工作:( 難道我以前'把這個<?PHP的同時(have_posts()):the_post();?> \t \t \t ; \t <?php endwhile;?>' – Pdnell

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標籤。

+0

不幸的是,沒有它不是。它仍然顯示這兩個帖子。 – Pdnell

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; 
+0

否否否,請勿使用'query_posts'。這是邪惡的。使用'WP_Query'而不是 –

1

您的條件語句不正確。如果你需要一個或另一個,你需要做這樣的事情

if(is_page('news')) { 
<--- do something for news ---> 
}elseif(is_page('othernews')) { 
<---do something for othernews---> 
} 

並請請請,不要使用query_posts,它是邪惡的。而是使用WP_Query