Преобразование массового сообщения

Мне дали сайт WordPress клиента для обновления и улучшения. Самая большая проблема – мне нужно взять около 200 + сообщений определенной категории, «обзоры» и преобразовать их все в пользовательские сообщения типа «отзывы».

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

Я ожидаю, что мне придется написать собственный скрипт, который изменит mysql direct. Но прежде, чем я получу свои руки грязными, есть ли у кого-нибудь опыт в этом? Какие-нибудь советы / gotchas / скрипты там я могу использовать?

ура

Solutions Collecting From Web of "Преобразование массового сообщения"

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

Просто получите идентификатор сообщения для сообщений, которые вам нужно изменить и изменить, и если вы не хотите создавать пользовательский SQL-запрос, для которого вы даже можете это сделать WordPress:

 //first get the post_ids as an array /*the SQL way global $wpdb; $querystr = " SELECT * FROM $wpdb->posts LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id) LEFT JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) LEFT JOIN $wpdb->terms ON($wpdb->terms.term_id = $wpdb->term_taxonomy.term_id) WHERE $wpdb->terms.name = 'CAGETORY_NAME' AND $wpdb->term_taxonomy.taxonomy = 'category' AND $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'post' "; $post_ids = $wpdb->get_results($querystr); */ // // // /* the WordPress Way */ $post_ids = get_posts(array('post_per_page' => -1, 'cat' => category_id)); //then update each post foreach($post_ids as $p){ $po = array(); $po = get_post($p->ID,'ARRAY_A'); $po['post_type'] = "NEW_TYPE_NAME"; wp_update_post($po); } 

Вы можете просто использовать этот плагин:

http://wordpress.org/extend/plugins/convert-post-types/

Вы можете сделать это непосредственно через SQL (важно, если у вас есть огромная библиотека контента). При этом вы, вероятно, захотите также обновить руководство. SQL для обновления как post_type, так и guid:

 UPDATE wp_posts p LEFT JOIN wp_postmeta pm ON p.ID=pm.post_id SET p.post_type='NEW_POST_TYPE', p.guid=REPLACE(p.guid, 'OLD_POST_TYPE', 'NEW_POST_TYPE') WHERE p.post_type='OLD_POST_TYPE'