iborisbelov
@iborisbelov
Веб-дизайнер, UX\UI

Как в author.php вывести посты только этого автора?

Добрый день.

Вопрос вот в чем.

Если я делаю вывод через
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
, то все как и надо нормально выводится.

Но если я делаю вывод через
<?php if (have_posts()) : ?>
<?php query_posts('posts_per_page=5'); ?>
<?php while (have_posts()) : the_post(); ?>
, то выводятся посты всех авторов.

Видать система начинает неконтачить с query_posts, может есть какой то способ?

Мне обязательно надо, чтобы вывод постов ограничивался 5 записями, ибо потом идет подгрузка других.
  • Вопрос задан
  • 1586 просмотров
Решения вопроса 1
Punkie
@Punkie
Выводите через
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>


А в functions.php добавьте:
function author_per_page( $query ) {

    if( is_author() && !is_admin() && $query->is_main_query() ) {
        $query->set( 'posts_per_page', 5 );
    }
add_action( 'pre_get_posts', 'author_per_page' );
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
MonsterMan
@MonsterMan
Есть мнение, что старый добрый query_posts лучше не использовать никогда, чтобы избежать проблем в будущем.
Используйте WP_Query в тех местах, где вам нужно и всё будет хорошо.
Например авторов можно вывести так:
$query = new WP_Query( 'author=1' );
или так
$query = new WP_Query( 'author_name=KrutoiAvtor' );
Ответ написан
DVamp1r3
@DVamp1r3
Java/PHP программист
Ответ написан
Комментировать
creativeworm
@creativeworm
если используете query_posts, то требуется "прибавлять" к тому, что уже есть, а Вы переопределяете основной цикл.
global $wp_query;
query_posts(
	array_merge( // склеиваем массивы
		$wp_query->query, // это массив базового запроса текущей страницы
		array('posts_per_page' => 5) // это параметры который добавили мы
	)
);
// Дальше цикл
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы