Intereting Posts
как создать shortcode в wordpress Какая тема хороша для публикации кода? запрос на поиск «родительских» сообщений CPT A при фильтрации «дочерних» сообщений CPT B Как интегрировать таблицу пользовательских баз данных в WordPress и использовать функции WordPress Создание подпапки внутри корневой установки? Loop не работает на странице single.php Как контролировать, какую версию jQuery включить, с помощью wp_enqueue_script Условный css для пользовательского типа сообщения Backticks (`) Вместо одиночных кавычек (') в SQL-заявлении? Как добавить условные скрипты IE9 к функциям.php Сильное ядро ​​для использования .dev файлов JavaScript Связать изображения, чтобы опубликовать постоянную ссылку – настраиваемые типы сообщений Есть ли функция редактирования содержимого «Блоги» на странице «Блоги»? Горизонтальный скроллер с функцией post_thumbnail Объединение двух meta_values ​​в одной строке с запросом

Запрос MySQL для установки wp_postmeta с использованием значения term_taxonomy_id

Мне нужно установить значение wp_postmeta (в таблице: wp_postmeta ) для каждого сообщения, которое имеет определенный term_taxonomy_id (в таблице: wp_term_relationships ):

В частности:

  • запустите запрос против каждого post_ID который имеет значение term_taxonomy_id 18
  • если wp_postmeta для этого post_ID не содержит ключа _category_permalink_ то добавьте его со значением, установленным в 18, иначе игнорируйте его

Мой MySQL foo беден, поэтому извиняйтесь, если это не имеет смысла, или у меня есть таблицы, имена неправильные.

ОБНОВЛЕНИЕ: В отношении ответов / комментариев ниже @deadlyhifi и @ У меня есть следующее:

 function cleanup_permalink() { static $fnCount = 0; //to run only once if ($fnCount) return; $fnCount++; global $wpdb; $results = $wpdb->get_results("SELECT `object_id` FROM $wpdb->term_relationships WHERE `term_taxonomy_id` = 18"); foreach ($results as $result) { add_post_meta( $result, '_category_permalink_', '18', true); } } add_action('init','cleanup_permalink'); //i'm assuming init is the best place? 

Solutions Collecting From Web of "Запрос MySQL для установки wp_postmeta с использованием значения term_taxonomy_id"

Я думаю, что я знаю, что вы имеете в виду, и если это так, это на самом деле простая операция.

Сначала term_relationship все object_id из таблицы term_relationship .

 $results = $wpdb->get_results("SELECT `object_id` FROM $wpdb->term_relationships WHERE `term_taxonomy_id` = 18"); 

Затем пропустите каждое из этих значений и update_post_meta до 18.

 foreach ( $results as $result ) update_post_meta($result, '_category_permalink_', '18', true); 

Не может быть так просто?

Ответ @ deadlyhifi выглядит хорошо. Я бы предложил попробовать WP_Query хотя для более WP_Query для пользователя оператора «select» предположим, что ваш термин таксономия 18 является категорией foo , вот эквивалент WP_Query :

 $query = new WP_Query( array( 'posts_per_page' => -1, 'category_name' => 'foo', // slug, not name! ) ); while ( $query->have_posts() ) { $query->the_post(); update_post_meta( get_the_ID(), '_category_permalink_', 18, true ); } 

Вы также можете использовать 'cat' => 18 если вам нужно придерживаться идентификаторов. Это определенно не быстрее, чем прямой метод SQL, упомянутый @deadlyhifi, но он более дружелюбен для глаз.

 global $wpdb; $query = 'SELECT `object_id` FROM '.$wpdb->term_relationships.' WHERE `term_taxonomy_id`=18'; $obj_ids = $wpdb->get_col( $query ); foreach( $obj_ids as $post_id ) { update_post_meta( $post_id, '_category_permalink_', '18' ); } 

Должно ли это сделать для вас, если метод @ kovshenin не работает, так как это лучший метод, если это так (хотя я могу попробовать foreach, а не лично, либо действителен).

Я не тестировал это напрямую, но я протестировал запрос, а также проверил вывод на $obj_ids , поэтому, если он не идеален, он близок.