Запрос фильтра на пользовательский пост текущего автора в виджете постов для идентификатора запроса Elementor

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

Я использую виджет постов в 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 темы или в плагин, убедитесь, что:

  1. У вас есть посты с типом, который вы фильтруете.
  2. Посты действительно имеют статус "черновик" и созданы текущим пользователем.

Рекомендации по SEO

  • Ключевые слова: Используйте такие ключевые слова, как "фильтрация постов", "Elementor Pro", "пользовательский пост", "статус черновик", чтобы улучшить поисковую оптимизацию вашего контента.
  • Структура: Разобейте рендеринг ваших постов на структурированные блоки и этапы, чтобы пользователи и поисковые системы могли легко ориентироваться в вашем контенте.

Заключение

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

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

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