Поискав в интернете информацию, как это сделать, я обнаружил, что информации почти нет. Чтобы сделать вывод всех стаей, я начал искать просто способ как вывести все статьи. В этом нам поможет WP_Query.
У WP_Query есть много возможностей, одна из которых как раз и позволяет выводить разного рода посты, по разным критериям. Как раз одним из таких критериев и есть наше условие вывода постов авторизованного пользователя. Такой запрос будет выглядеть следующим образом:
$query = new WP_Query( array( 'author' => get_current_user_id(), ) );
Сам по себе он ничего не выведет просто делает запрос. Для того, чтобы вывести заглавия статей, нужно добавить еще несколько строк кода. В итоге мы создаем цикл, который и выведет список статей. Выглядеть такой цикл будет так:
<?php $query = new WP_Query( array( 'author' => get_current_user_id(),) ); while ($query->have_posts() ) : $query->the_post(); ?> <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a> <?php endwhile; wp_reset_postdata();?>
Как видите с помощью WP_Query мы создали запрос, а далее нашему циклу задали параметр $query. Внутри цикла, в 3 строке нашего кода мы просто создаем ссылку на заглавие.
<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
Данный код уже справляется с поставленной задачей, но я предлагаю еще добавить одно условие. Суть условия в том, чтобы показывать данный список только авторизованным пользователям. Получается, что если на страницу где выводится этот список попадет не авторизованный пользователь, то он просто увидит список всех записей сайта подряд. В этом нет смысла, к тому же зачем вам лишняя нагрузка на сайт, ведь если на нем очень много записей, то их все выведет, заняв при этом не мало памяти во время запроса к базе данных.
Для условия отсекающего не авторизованных пользователей, я предлагаю использовать материал из статьи на моем сайте - Как показывать текст только зарегистрированным пользователям WordPress. Берем самое простое условие - "Если пользователь зарегистрирован, то..."
<?php if ( is_user_logged_in() ) { // Сюда то что увидят зарегистрированные пользователи } ?>
Теперь совместим эти два кода, чтобы получить уже готовый результат. Так это будет выглядеть:
<?php if ( is_user_logged_in() ) { $query = new WP_Query( array( 'author' => get_current_user_id(),) ); while ($query->have_posts() ) : $query->the_post(); ?> <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a> <?php endwhile; wp_reset_postdata(); } ?>
Данный код можно добавить в любое место Вашей темы. Он уже заключен в теги PHP и выглядит так:
<?php // тут код ?>
Если у Вас в теме используется в основном HTML код, то вставляйте вышеприведенный код без изменений. Если используется в основном PHP, то теги в которые заключен код можно удалить. Речь идет о первом и последнем теге. Те что внутри кода, их трогать не нужно.
По желанию, рядом с ссылками на записи, можете вывести миниатюры или часть текста записи, количество просмотров или комментариев, дату или метки. Для этого Вам помогут статьи:
- Подключение и вывод миниатюры в WordPress
- Длина описания цитаты, тизера, текста записи WordPress с помощью wp_trim_words
- Количество просмотров записи WordPress
- Как вывести дату, рубрику, число комментариев и метки к записи WordPress
Расписывать подробно не буду, в данном материале это уже сделано. Если Вы не первый день работаете с WordPress, то сложности добавить функции вывода дополнительной информации не составит. Как и говорил, рядом с ссылкой нужно добавить вызов нужных функций. Это одна или пару строк. Так же, Вы можете заключать все в блоки и добавить стилей, чтобы придать нужный вид нашему блоку с списком.
Решил добавить еще немного слов о нашем коде. Так как мы используем WP_Query, то можем использовать все его параметры. Например, если Вы хотите ограничить количество выводимых записей, то добавьте параметр posts_per_page и укажите количество выводимых постов.
В новом коде я разбил параметры на строки, чтобы было понятней. В 3 строке мы задаем сортировку по пользователю, который авторизован, а в 4 уже ограничиваем по количеству.
<?php if ( is_user_logged_in() ) { $query = new WP_Query( array( 'author' => get_current_user_id(), 'posts_per_page' => 5, ) ); while ($query->have_posts() ) : $query->the_post(); ?> <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a> <?php endwhile; wp_reset_postdata(); } ?>
Список параметров можно продолжать через запятую. Например если хотите изменить сортировку. По умолчанию она задается по дате. Можно добавить например параметр - сортировка по заглавиям.
'orderby' => 'title'
Или сортировка в случайном порядке.
'orderby' => 'rand'
Сортировка по количеству комментариев.
'orderby' => 'comment_count'
В итоге добавится еще строка:
<?php if ( is_user_logged_in() ) { $query = new WP_Query( array( 'author' => get_current_user_id(), 'posts_per_page' => 5, 'orderby' => 'title' ) ); while ($query->have_posts() ) : $query->the_post(); ?> <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a> <?php endwhile; wp_reset_postdata(); } ?>
В WP_Query есть еще много параметров, кроме сортировки. Можете применять их. Как и писал выше, делайте это через запятую, указывая нужный. Дорабатывайте, изменяйте и улучшайте материал из данной статьи, чтобы добиться того, что нужно именно Вам. Я дал заготовку, которая поможет Вам вывести список записей пользователя, а Вы уже решайте как его использовать.
На этом все, спасибо за внимание. 🙂