Вопрос или проблема
Вот код, в основном я хочу получить записи по автору поста, но не могу решить эту проблему, нужна помощь в этом.
<?php
global $post;
$author = get_the_author();
$args = array(
'author' =>$user_ID,
'posts_per_page' => $per_page,
'author'=> $author,
'post_type' => 'ultimate-auction',
//'auction-status' => 'expired',
'post_status' => 'publish',
'offset' => $pagination,
'orderby' => 'meta_value',
'meta_key' => 'wdm_listing_ends',
'order' => 'DESC',
);
$author_posts = new WP_Query( $args );
if( $author_posts->have_posts() ) {
while( $author_posts->have_posts()) {
$author_posts->the_post();
?>
<?php the_content();?></div>
<?php
// вы должны иметь доступ ко всем тегам, которые обычно
// можете использовать в цикле
}
wp_reset_postdata();
}
?>
Вы используете 'author' => ...
дважды в своем коде.
Чтобы получить ID автора, вам следует использовать get_the_author_meta('ID')
вместо этого. Поэтому удалите второй аргумент автора и используйте это в своем коде:
$author = get_the_author_meta('ID');
$args = array(
'posts_per_page' => $per_page,
'author'=> $author,
'post_type' => 'ultimate-auction',
//'auction-status' => 'expired',
'post_status' => 'publish',
'offset' => $pagination,
'orderby' => 'meta_value',
'meta_key' => 'wdm_listing_ends',
'order' => 'DESC',
);
Кстати, глобальная $post
сама по себе содержит ID автора поста, который вы можете получить, используя $post->post_author;
.
Если вы хотите использовать имя автора, вы можете использовать 'author_name' => ...
вместе с get_the_author_meta('nicename')
.
Посмотрите на параметры автора в WP_Query
в документации WordPress для получения более подробной информации.
$args = array(
'author' => $current_user->ID,
'orderby' => 'post_date',
'order' => 'ASC',
'posts_per_page' => 1
);
Ответ или решение
Конечно, давайте разберем, как правильно извлечь произвольные посты по автору в WordPress.
Как получить произвольные посты по автору в WordPress
Используя WP_Query, вы можете извлекать записи в WordPress на основе различных параметров, включая автора. Однако в вашем исходном коде есть несколько ошибок, которые мы должны исправить.
Шаг 1: Исправление ошибки с автором
В вашем коде вы дважды определяете параметр ‘author’, что может привести к некорректной работе запроса. Необходимо использовать только один параметр для указания авторства. Чтобы получить ID автора, вы можете воспользоваться функцией get_the_author_meta('ID')
, или, если вы используете глобальную переменную $post
, просто получить post_author
из нее.
global $post;
$author = $post->post_author; // Получаем ID автора текущего поста
Шаг 2: Оптимизация аргументов запроса
Используйте только нужные параметры для вашего запроса, удалив лишние. Вот как это может выглядеть:
$args = array(
'author' => $author, // Указываем ID автора
'posts_per_page' => $per_page, // Количество постов на странице
'post_type' => 'ultimate-auction', // Тип поста
'post_status' => 'publish', // Только опубликованные посты
'offset' => $pagination, // Сдвиг для пагинации
'orderby' => 'meta_value', // Сортировка
'meta_key' => 'wdm_listing_ends', // Ключ метаполя для сортировки
'order' => 'DESC' // Порядок сортировки
);
Шаг 3: Выполнение запроса и вывод постов
Теперь выполните запрос и выведите результаты. В этом процессе также важно не забыть сбросить данные поста после цикла, чтобы избежать конфликтов с другими частями страницы.
$author_posts = new WP_Query($args);
if ($author_posts->have_posts()) {
while ($author_posts->have_posts()) {
$author_posts->the_post(); // Устанавливаем данные поста
the_content(); // Выводим содержимое поста
}
wp_reset_postdata(); // Сбрасываем данные поста
} else {
echo 'Нет доступных постов.'; // Сообщение, если посты не найдены
}
Дополнительные рекомендации
-
Используйте кэширование: Если ваш сайт имеет высокую посещаемость, подумайте о кэшировании ваших запросов, чтобы уменьшить нагрузку на базу данных.
-
SEO-оптимизация: Чтобы улучшить SEO вашего сайта, убедитесь, что каждый пост имеет метаописания и заголовки, соответствующие его содержимому. Также используйте ключевые слова, связанные с темой постов авторов.
-
Проверяйте ошибки: Регулярно проверяйте код на наличие ошибок. Например, вы можете использовать функции WordPress для вывода отладочной информации.
Заключение
Работа с WP_Query позволяет эффективно извлекать и отображать посты в WordPress на основе различных параметров, включая авторство. Следуя вышеперечисленным шагам и рекомендациям, вы сможете корректно вывести произвольные посты по автору, а также оптимизировать их вывод для лучшего пользовательского опыта и SEO.