Intereting Posts
Неустранимая ошибка: вызов функции-функции члена () для не-объекта 3.6.1 Неправильный путь при добавлении пользовательской вкладки в BuddyPress Увеличение изображения kb при изменении размера Есть ли способ добавить дополнительные функции в 1 пользовательские поля? Например: answer1; answer2; answer3; Запуск интерфейса и бэкэнд WordPress в разных доменах Типы почтовых сообщений WordPress? Использование пользовательского режима темы WordPress для выбора шаблонов страниц, которые обновляют макет в предварительном просмотре Как заставить get_theme_mod работать с AJAX в предварительном просмотре Вкладка из API настроек сбросит все параметры с помощью INSERT INTO После входа в панель администратора панель управления пуста. Я не могу просматривать или добавлять комментарии Внештатная реализация типа сообщения Как получить медиа-объекты Если «редактор» пуст, то Добавление URL страницы в таблицу администраторов страниц

$ wp_query meta_key проблема с именами

То, что я пытаюсь сделать, это сортировать сообщения по настраиваемым полям.

У меня есть несколько настраиваемых полей, которые не запрашивают должным образом, и я получаю страницу 404. Поля, которые не работают, я использовал дефисы в соглашении именования, то есть var-name . Когда я переключаю дефисы на подчеркивания, это работает, то есть var_name .

Могу ли я игнорировать что-то простое в PHP или WordPress, которое вызывает конфликты, когда я это делаю?

  • Я знаю, что просто могу просто переключить все на подчеркивания, но мне нравится знать корень проблем, чтобы я мог избежать их в будущем.

Я использую pre_get_posts для изменения выполняемого запроса:

 add_action( 'pre_get_posts', 'my_modify_query' ); function my_modify_query( $wp_query ) { if ( is_category() ) { // Works - underscore if ( isset( $_REQUEST['var_name'] ) ) { $meta_query[] = array( 'key' => 'var_name', 'value' => $_REQUEST['var_name'] ); } // Sometimes works - hyphen if ( isset( $_REQUEST['var-name'] ) ) { $meta_query[] = array( 'key' => 'var-name', 'value' => $_REQUEST['var-name'] ); } if ( ! empty( $meta_query ) ) { $wp_query->set( 'meta_query', $meta_query ); } } } 

Имейте дополнительные пользовательские поля, которые я проверяю, приведенный выше пример для краткости и пояснений и для других полей одинаковый.

ИЗМЕНИТЬ 1

Ниже приведены запросы, выполняемые WordPress:

Неудачный дефис

 SELECT SQL_CALC_FOUND_ROWS wp_xxxxx_posts.ID FROM wp_xxxxx_posts WHERE 1=1 AND 0 = 1 AND wp_xxxxx_posts.post_type IN ('post') AND ( wp_xxxxx_posts.post_status = 'publish' OR wp_xxxxx_posts.post_author = 1 AND wp_xxxxx_posts.post_status = 'private') GROUP BY wp_xxxxx_posts.ID ORDER BY wp_xxxxx_posts.post_date DESC LIMIT 0, 10 

Успешное подчеркивание

 SELECT SQL_CALC_FOUND_ROWS wp_xxxxx_posts.ID FROM wp_xxxxx_posts INNER JOIN wp_j9L3vi_postmeta ON (wp_xxxxx_posts.ID = wp_xxxxx_postmeta.post_id) WHERE 1=1 AND wp_xxxxx_posts.post_type IN ('post', 'custom_post_type' ) AND ( wp_xxxxx_posts.post_status = 'publish' OR wp_xxxxx_posts.post_author = 1 AND wp_xxxxx_posts.post_status = 'private' ) AND ( ( wp_xxxxx_postmeta.meta_key = 'var_name' AND CAST(wp_xxxxx_postmeta.meta_value AS CHAR) = '116' ) ) GROUP BY wp_xxxxx_posts.ID ORDER BY wp_xxxxx_posts.post_date DESC LIMIT 0, 10 

Если я перейду в phpMyAdmin и просто var_name в указанном выше запросе на var-name это сработает.

Изменить 2

Я передаю пользовательские поля так:

 http://mysite.com/?cat=example&var-name=100 

Solutions Collecting From Web of "$ wp_query meta_key проблема с именами"