Вопрос или проблема
Я использую виджет постов в Elementor Pro. Идея заключается в том, чтобы показать все посты определенного пользовательского типа записи. Теперь я хочу также применить некоторые фильтры, в частности, хочу показать только посты в определенном статусе (например, “черновик”) и те, которые созданы (“автор поста”) пользователем, который вошел в систему.
Я смог создать запрос для статуса и передать идентификатор запроса (my_query_by_post_status), вот так:
add_action( 'elementor/query/my_query_by_post_status', function( $query ) {
$query->set( 'post_status', ['draft'] );
} );
Но я не знаю, как добавить условие, чтобы сказать “только для автора, который совпадает с текущим вошедшим пользователем”.
Может кто-то помочь мне с этим?
Я действительно признателен и заранее благодарю вас.
Марио.
получить id текущего пользователя, используя get_current_user_id()
(вернет 0, если никто не вошел в систему)
$current_user = get_current_user_id();
if($current_user != 0){
$query->set( 'author', [$current_user] );
}
.
Ответ или решение
Чтобы настроить фильтрацию постов по автору и статусу в виджете постов Elementor Pro, вам нужно реализовать несколько ключевых моментов.
Шаг 1: Определение текущего пользователя
Первое, что мы сделаем, это получим ID текущего пользователя с помощью функции get_current_user_id()
. Эта функция вернет 0, если никто не вошел в систему, что нужно учитывать.
$current_user = get_current_user_id();
Шаг 2: Настройка действия для вашего виджета
После получения ID текущего пользователя, вы сможете использовать этот ID для фильтрации постов, созданных автором. Ваша цель — проверить, вошел ли пользователь в систему, и если это так, добавить условие для автора в запрос.
Шаг 3: Добавление условия к запросу Elementor
Чтобы применить условия к вашему запросу, вы можете воспользоваться хуком elementor/query/{query_id}
. В вашем случае, это будет выглядеть следующим образом:
add_action( 'elementor/query/my_query_by_post_status', function( $query ) {
// Устанавливаем статус поста
$query->set( 'post_status', ['draft'] );
// Получаем ID текущего пользователя
$current_user = get_current_user_id();
// Проверяем, если пользователь вошел в систему
if ($current_user != 0) {
// Устанавливаем автора поста равным текущему пользователю
$query->set( 'author', [$current_user] );
}
} );
Шаг 4: Проверка и тестирование
После добавления этого кода в ваш файл functions.php
темы или в плагин, убедитесь, что:
- У вас есть посты с типом, который вы фильтруете.
- Посты действительно имеют статус "черновик" и созданы текущим пользователем.
Рекомендации по SEO
- Ключевые слова: Используйте такие ключевые слова, как "фильтрация постов", "Elementor Pro", "пользовательский пост", "статус черновик", чтобы улучшить поисковую оптимизацию вашего контента.
- Структура: Разобейте рендеринг ваших постов на структурированные блоки и этапы, чтобы пользователи и поисковые системы могли легко ориентироваться в вашем контенте.
Заключение
Следуя этим шагам, вы сможете успешно настроить отображение постов на вашем веб-сайте с учетом заданных фильтров. Убедитесь, что вы протестировали функциональность на сайте, чтобы гарантировать корректную работу фильтров и отображение постов как задумано. Не забывайте о том, что регулярное обновление кода и следование лучшим практикам разработки WordPress помогут поддерживать ваш сайт в хорошем состоянии.