Intereting Posts
Как отобразить большинство комментариев для прошедшей недели 14 000 пользователей WordPress. Как они туда попали? Отображение содержимого одного пользовательского типа сообщения на одном столбце другого пользовательского типа сообщения цикл внутри foreach Скрыть первое сообщение в блоге в контенте и вывести его в виджет Сбор информации о пользователе при нажатии ссылки на скачивание Перенаправление WordPress Когда строка запроса содержит номер Как получить количество просмотров каждой страницы на сайте и добавить этот (увеличивающий) номер к Виджет панели мониторинга plugins_url () неверно возвращает каталог wp-include Проверьте, присвоена ли текущая страница идентификатору тега WordPress после содержимого Hook & external template part Пакетный процесс: удаление первого изображения из сообщения Содержание для woocommerce_after_cart_table JavaScript enque прекратил работу Идентификаторы подкатегорий в отношении родительского типа.

передавать параметры через переменную в WP_QUERY

Я пытаюсь использовать плагин PrivateContent для ограничения доступа к определенным страницам / категориям. У меня есть функция (getAllowedCategories ()), которая считывает уровни доступа PrivateContent для текущего пользователя и выводит список идентификаторов категорий, к которым пользователь имеет доступ. Я пытаюсь использовать это для создания цикла foreach (), который передает каждый ID в WP_QUERY и генерирует последние два сообщения в этой категории. Но когда я пытаюсь использовать переменную как параметр WP_QUERY, она вообще не фильтрует. Вот мой код:

<?php $currentCats = getAllowedCategories($user_data); foreach ($currentCats as $currentCat) { echo $currentCat . "<br/>"; $parameters = "'category__in=" . $currentCat . "'"; $aj_query = new WP_Query( $parameters ); if ( $aj_query->have_posts() ) { echo '<ul>'; while ( $aj_query->have_posts() ) { $aj_query->the_post(); echo '<li>' . get_the_title() . '</li>'; } echo '</ul>'; } wp_reset_postdata(); } ?> 

Вы переносите строку параметров в ненужный слой кавычек:

  • $parameters = "'category__in=1'"; – неправильно
  • $parameters = 'category__in=1'; – правильно

Обычно предпочтительнее использовать массивы для аргументов запроса:

  • $parameters = [ 'category__in' => 1 ];

Кодирование WordPress помогло мне разобраться в этом. Это было обертывание параметров запроса в одинарных кавычках – это работает, когда все является простым текстом (например, $aj_query = new WP_Query( 'category__in=4'); )

Нет необходимости передавать переменную $ parameters в WP_QUERY (хотя я предполагаю, что этот метод также может работать). Отбрасывая одинарные кавычки и просто передавая $currentCat прямо в WP_QUERY , все фильтрует точно. Окончательный код для запроса выглядит следующим образом:

$aj_query = new WP_Query( "category__in=" . $currentCat);

Это правильно прочитает переменную и вернет все сообщения непосредственно в этой категории (а не в сообщениях для детей – если вы хотите включить дочерние категории, используйте "cat" вместо "category__in" .