Intereting Posts
Фильтрация по дате настраиваемого поля в пользовательском типе сообщений в группе страниц администратора по месяцам Объединение файлов CSS и JS из плагинов Добавить предупреждение о зрелости для посетителей в первый раз Почему мои входы в форму с методом Get работают вместе? Каков правильный способ записи этого условного оператора? как получить идентификатор сообщения в плагине Получение категории детей Экспорт csv и force скачать на странице шаблона Получение только URL-адреса эскиза сообщения Как запросить персонализированный тип почтового сообщения? Можно ли добавлять и отображать пользовательские типы сообщений в массив? Профили игроков WordPress + PHP Комментировать текстовую область в одном блоге и показывать комментарии, если они одобрены Отображать сообщение в зависимости от возможности внешнего цикла Bootstrap и Custom CSS в пользовательском плагине заменяются темой

Невозможно обновить несколько строк с помощью запроса $ wpdb

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

Я следую разному методу, даже если он кажется хорошим:

global $wpdb; $result = $wpdb->query("UPDATE $wpdb->posts SET $wpdb->posts.post_type = 'editorial_post' WHERE $wpdb->posts.post_type = post AND $wpdb->postmeta.meta_key = 'tag' AND $wpdb->postmeta.meta_value = 'editorial'"); var_dump($result); 

Var_dump() всегда возвращает нулевой результат. Может ли кто-нибудь сказать мне, где я ошибаюсь? Большое спасибо.

$wpdb->query() возвращает количество строк, на которые влияет запрос. Он возвращает NULL указывает, что в вашем запросе есть ошибка.

Проблема с вашим запросом в том, что вы обновляете $wpdb->posts , но условие зависит от $wpdb->postmeta . Вы должны присоединиться к этим таблицам, чтобы запрос работал.

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

 $wpdb->posts.post_type = 'post' 

Попробуйте выполнить следующий запрос.

 global $wpdb; $result = $wpdb->query("UPDATE $wpdb->posts INNER JOIN $wpdb->postmeta ON $wpdb->posts.ID = $wpdb->postmeta.post_id SET $wpdb->posts.post_type = 'editorial_post' WHERE $wpdb->posts.post_type = 'post' AND $wpdb->postmeta.meta_key = 'tag' AND $wpdb->postmeta.meta_value = 'editorial'"); var_dump($result);