2017-02-21 142 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