Intereting Posts
Преобразование дефиса для подчеркивания в постоянных ссылках Редактирование нескольких пользовательских типов сообщений при сохранении нового или отредактированного сообщения Как предотвратить / задержать соединения MySQL при использовании кеша объектов? удалить атрибуты страницы полей Как перенаправить перенаправление на страницу 404? Удалить ссылки меню администратора для нескольких пользователей по электронной почте Мне нужно иметь дело с WordPress SQL Injection Последняя страница комментариев сначала с полным количеством комментариев? Связывание настраиваемого элемента подменю с типом пункта верхнего уровня верхнего уровня Как добавить текущий класс к текущему сообщению? Как я могу удалить все теги html из get_the_content ()? Конкретный css на главной странице, другой для других страниц Получить категорию из идентификатора продукта? Редактирование страниц тегов и использование шаблонов Пользовательский поисковый запрос и разбивка на страницы

Должен использовать плагин, вызывающий ошибку запроса

Я создал MU Plugin, который будет отображать сообщения только из определенных тегов в цикле:

function custom_tags( $query ) { $query->set( 'tag', array( 'custom', 'general' ) ); } add_action( 'pre_get_posts', 'custom_tags' ); 

Он отлично работает, когда я удаляю массив и проверяю только 1 тег, но как мне заставить его работать с более чем 1 тегом, как я пытаюсь выше?

Ошибка, которую я получаю:

Warning: strpos() expects parameter 1 to be string, array given in /srv/users/s/wp-includes/query.php on line 1966

Warning: preg_split() expects parameter 2 to be string, array given in /srv/users/s/wp-includes/query.php on line 1967

Обновленный код:

 $current = substr($_SERVER[HTTP_HOST], 0, -4); function custom_tags( $query ) { $query->set( 'tag', 'general,{$current}' ); } add_action( 'pre_get_posts', 'custom_tags' ); 

Как указывает Мило (и ваши ошибки): вы передаете массив, в котором ожидается строка. Согласно параметру тега WP_Query

Показывать сообщения, связанные с определенными тегами.

  • tag ( string ) – использовать тег slug.

Чтобы обойти это, вам просто нужно передать строку, разделенную запятой:

 function custom_tags( $query ) { $query->set( 'tag', 'custom,general' ); } add_action( 'pre_get_posts', 'custom_tags' ); 

Создайте надлежащий tax_query , например:

 'tax_query' => array( array( 'taxonomy' => 'people', 'field' => 'slug', 'terms' => 'bob', ), ), 

Но ваш код «код обновления» будет сбой по другим причинам.

  1. $current выходит за рамки.
  2. И ваша переменная не будет расширяться внутри одинарных кавычек

Изменения в голых костях вам нужны:

 function custom_tags( $query ) { $current = substr($_SERVER[HTTP_HOST], 0, -4); $query->set( 'tag', "general,{$current}" ); } add_action( 'pre_get_posts', 'custom_tags' ); 

Но, как уже упоминалось, я бы создал правильный tax_query

 function custom_tags( $query ) { $current = substr($_SERVER[HTTP_HOST], 0, -4); $tax = array( array( 'taxonomy' => 'tag', 'field' => 'slug', 'terms' => $current, 'operator' => 'IN' // This is default ), ); $query->set( 'tag', "general,{$current}" ); } add_action( 'pre_get_posts', 'custom_tags' ); 

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

operator ( string ) – Оператор для проверки. Возможные значения: «IN», «NOT IN», «AND», «EXISTS» и «NOT EXISTS». Значение по умолчанию – «IN».

И ваш код будет работать на каждом запросе на сайте. Это многое изменит , и это, безусловно, нарушит все. Вам нужно ограничить его только теми местами, в которых вы нуждаетесь. Я не знаю точно, где или когда это должно запускаться, но это должно быть началом:

 function custom_tags( $query ) { if (is_admin() || $query->is_main_query() ) { return; } $current = substr($_SERVER[HTTP_HOST], 0, -4); $tax = array( array( 'taxonomy' => 'tag', 'field' => 'slug', 'terms' => $current, 'operator' => 'IN' // This is default ), ); $query->set( 'tag', "general,{$current}" ); } add_action( 'pre_get_posts', 'custom_tags' );