Как получить пользовательскую запись по автору?

Вопрос или проблема

Вот код, в основном я хочу получить записи по автору поста, но не могу решить эту проблему, нужна помощь в этом.

<?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 'Нет доступных постов.'; // Сообщение, если посты не найдены
}

Дополнительные рекомендации

  1. Используйте кэширование: Если ваш сайт имеет высокую посещаемость, подумайте о кэшировании ваших запросов, чтобы уменьшить нагрузку на базу данных.

  2. SEO-оптимизация: Чтобы улучшить SEO вашего сайта, убедитесь, что каждый пост имеет метаописания и заголовки, соответствующие его содержимому. Также используйте ключевые слова, связанные с темой постов авторов.

  3. Проверяйте ошибки: Регулярно проверяйте код на наличие ошибок. Например, вы можете использовать функции WordPress для вывода отладочной информации.

Заключение

Работа с WP_Query позволяет эффективно извлекать и отображать посты в WordPress на основе различных параметров, включая авторство. Следуя вышеперечисленным шагам и рекомендациям, вы сможете корректно вывести произвольные посты по автору, а также оптимизировать их вывод для лучшего пользовательского опыта и SEO.

Оцените материал
Добавить комментарий

Капча загружается...