Массовый тег добавления (или любой ярлык) на сообщения, у которых есть пользовательский отрывок

Ситуация такова:

Блог на данный момент имеет 2200+ сообщений. В начале (2007/2008) я использовал ручные выдержки, где я бы поставил изображение и немного текста. Ручная выдержка (поле выдержки, заполненное изображением и текстом) отображается в архивах и везде, где захочет.

Однако в последнее время я решил не использовать ручную выдержку (поле excerpt, заполненное изображением и текстом). Я переключился на автоматическую выдержку WordPress, ограничил количество слов и извлек первое изображение в сообщении (если есть), где бы я ни захотел. Таким образом, большая гибкость. Чтобы сохранить однородность сайта, я использую условный тег has_excerpt () для настройки или применения новых правил CSS для тех сообщений, у которых есть ручная выдержка. Условный тег проверяет, использует ли почта поле excerpt (имеет ручную выдержку).

Теперь я хочу удалить все ручные выдержки (поле excerpt, заполненное изображением и текстом), и в то же время пометить эти сообщения (например, добавление тега), чтобы иметь возможность продолжать применять условные правила CSS для этих сообщений. Например, используя has_tag () .

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

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

  1. Добавьте тег (или любой другой ярлык, который, по вашему мнению, лучше), всем сообщениям, у которых есть ручные выдержки (поле excerpt, заполненное изображением и текстом).
  2. Удалите содержимое в поле выдержки во всех сообщениях.

Некоторые вопросы легко решаются при поиске этого стека и объединении некоторых ответов.

  • Преобразование массового сообщения
  • Автоматическое добавление одного тега ко всем сообщениям в категории

Следующий плагин будет запускать код преобразования при активации. Отрегулируйте массив $tags и не забудьте сделать резервную копию своей базы данных перед продолжением.

 <?php /* Plugin Name: Remove Excerpts, Add Tags */ register_activation_hook( __FILE__, 'wpse_56133_add_tags_remove_excerpts' ); function wpse_56133_add_tags_remove_excerpts() { $tags = array( 'YOUR TAG NAME A HERE', 'YOUR TAG NAME B HERE' ); $args = array( 'post_type' => 'post', 'numberposts' => -1, 'post_status' => published ); $posts = get_posts( $args ); foreach ( $posts as $post ) { $po = array(); $po = get_post( $post->ID,'ARRAY_A' ); $po['post_excerpt'] = ""; wp_update_post( $po ); //set last value to false if you want to replace existing tags. wp_set_post_terms( intval( $post->ID ), $tags, 'post_tag', true ); } }