2017-02-21 9 views
0

Может кто-нибудь объяснить, почему это возвращает только 1-й результат. Я хочу вернуть все результаты, которые имеют то же значение настраиваемого поля, что и текущий url. Он будет возвращаться 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

Смежные вопросы