Intereting Posts
Скажите разницу между термином и страницей, если у них одинаковый идентификатор Почему Custom Nav Men генерирует так много классов в элементах списка? Могу ли я это сделать? Как мне отключить пользователей с ограниченной страницы, если они уже вошли в систему на другом устройстве? Получение записи из трех таблиц wpdb Использовать существующие размеры изображений для WooCommerce Получение пути хранения изображений Как мне вызвать функцию для использования на странице? Если пользователь не работает Только показ предстоящих событий Отобразить пользовательский тип сообщения в URL-адресе пользовательской таксономии Функция для проверки того, находится ли пользователь на верхнем уровне сети? Пользовательский тег удаляется из текстового редактора Что я могу заменить '.get_bloginfo (' url ').' для возврата текущего URL-адреса вместо домашнего адреса? Как программно добавлять элементы контента к настраиваемому типу сообщений? Купить кнопку и страницу благодарности для моего сайта?

Запрос 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 , поэтому, если он не идеален, он близок.