X
  • Дизайн та розробка сайту
  • Дизайн і створення сайтів. Розробка тем для WordPress. Створення Landing Page.
  • office@gnatkovsky.com.ua
  • @vgnat
  • Написати мені
Замовити послугу

Как вывести все записи пользователя WordPress

Приклад
  • 2024-11-23
  • 9557 переглядів

  • Дизайн та розробка сайту

Доброго времени суток 🙂

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

Как вывести все записи пользователя WordPress

Поискав в интернете информацию, как это сделать, я обнаружил, что информации почти нет. Чтобы сделать вывод всех стаей, я начал искать просто способ как вывести все статьи. В этом нам поможет 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, то сложности добавить функции вывода дополнительной информации не составит. Как и говорил, рядом с ссылкой нужно добавить вызов нужных функций. Это одна или пару строк. Так же, Вы можете заключать все в блоки и добавить стилей, чтобы придать нужный вид нашему блоку с списком.

Решил добавить еще немного слов о нашем коде. Так как мы используем 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 есть еще много параметров, кроме сортировки. Можете применять их. Как и писал выше, делайте это через запятую, указывая нужный. Дорабатывайте, изменяйте и улучшайте материал из данной статьи, чтобы добиться того, что нужно именно Вам. Я дал заготовку, которая поможет Вам вывести список записей пользователя, а Вы уже решайте как его использовать.

На этом все, спасибо за внимание. 🙂

Якщо Вам була корисна моя праця, можете фінансово підтримати сайт або відключити блокувальник реклами, що займе 2 хвилини :)

Хочу підтримати фінансово Хочу відключити блокувальник

Оцініть статтю
  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
Проголосовало: 10, в среднем: 4.8 из 5
Читайте також

Deprecated: Функція WP_Query викликана з аргументом, який вважається застарілим з версії 3.1.0! Вираз caller_get_posts застарілий. Використовуйте ignore_sticky_posts. in /var/www/vhosts/gnatkovsky.com.ua/gnatkovsky.com.ua/public/wp-includes/functions.php on line 6078