2017-02-21 152 views
0

任何人都可以解釋爲什麼這隻返回第一個結果。我想返回所有與當前網址具有相同自定義字段值的結果。它會返回1.它是否需要一個或每件東西?謝謝!!WordPress的短代碼功能

<?php add_shortcode('feed', 'display_custom_post_type'); 

    function display_custom_post_type(){ 

    $url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; 

    $args = array( 
     'post_type'  => 'custom_post_type', 
     'posts_per_page' => -1 
    ); 

    $new_query = new WP_Query($args); 

    while($new_query->have_posts()) : $new_query->the_post(); 

    return get_title(); 

    endwhile; 

};?> 
+0

爲了簡單起見,我已經從示例中刪除了元查詢。包含或不包含元查詢的同樣的問題也是有說服力的。謝謝! – dmt

回答

1

因爲你已經添加了循環只會顯示最後一個內部的回報。您必須將循環放置在循環外部以顯示全部。

只是一個小例子來看看它的工作,改變該位:

while($new_query->have_posts()) : $new_query->the_post(); 

return get_title(); 

endwhile; 

這樣:

while($new_query->have_posts()) : $new_query->the_post(); 

$all_titles .= get_title(); 

endwhile; 

return $all_titles; 

將最有可能顯示在單行所有的冠軍,所以只是格式如你所願!

1

您從while循環中的第一個元素之後的函數「返回」。

例如返回所有的帖子:

$args = array(
    'post_type' => 'custom_post_type', 
    'posts_per_page' => -1 

); 
$results = get_posts($args); 
return $results; 
+0

對不起,這是我的問題上的錯字。這不能解決單一回報問題,而不是返回多個輸出。 – dmt