@big_hasan

WordPress: почему the_title() и прочие функции (get_posts() ) выводят данные текущей страницы, а не постов, прописанных в аргументах get_post?

Пытаюсь вывести записи определенной категории (id категории 7). И даже просто все записи без указания категорий.
Делаю это следующим способом:
function testimonial_letters_function ()
{
	$args = array('post_type' => 'post', 'category' => 7 );
	$myposts = get_posts( $args );
	foreach( $myposts as $post ){ 
		setup_postdata($post);
		echo ('<h2>'.the_title().'</h2>');
		echo ('<h2>'.the_permalink().'</h2>');
	}
}

Ничего не получается. Где бы я не выводил это - везде выводятся заголовок и ссылка текущей страницы (например, на главной странице выводятся "Home" и "localhost"). Причем выводятся столько раз, сколько всего записей в указанной категории.
Наверное, буду делать через WP_Query, но хотелось бы все-таки разобраться с get_posts.

UPD:
Получилось вывести заголовок через echo ($post->post_title). Но, судя по гайдам, the_title() так же должен работать, разве нет?
  • Вопрос задан
  • 324 просмотра
Решения вопроса 1
Palych_tw
@Palych_tw
Типа веб-разработчик
Попробуйте так:
function testimonial_letters_function ()
{
 global $post;
  $args = array('post_type' => 'post', 'category' => 7 );
  $myposts = get_posts( $args );
  foreach( $myposts as $post ){ 
    setup_postdata($post);
    echo ('<h2>'.the_title().'</h2>');
    echo ('<h2>'.the_permalink().'</h2>');
  }
wp_reset_postdata();
}


А еще лучше, используйте WP_Query:
function testimonial_letters_function ()
{
    $args = array('post_type' => 'post', 'cat' => 7 );
    $myposts = new WP_Query( $args );
    while( $myposts->have_posts() ) {
        $myposts->the_post();
        echo ('<h2>'.the_title().'</h2>');
        echo ('<h2>'.the_permalink().'</h2>');
    }
    wp_reset_postdata();
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы