web-dev-qa-db-ja.com

カスタム抜粋を含む投稿にタグ(または任意の種類のラベル)を一括追加する

状況は以下のとおりです。

ブログは現在2200以上の投稿があります。はじめに(2007/2008)、私は画像と少しのテキストを入れる手動の抜粋を使っていました。手動の抜粋(抜粋フィールドに画像とテキストが入力されている)は、アーカイブ上および必要な場所に表示されます。

しかし最近、私は手動の抜粋(画像とテキストが入った抜粋フィールド)を使用しないことにしました。自動ワードプレスの抜粋に切り替えて、単語数を制限し、投稿の最初の画像(ある場合)を取得します。そのようにもっと柔軟に。サイトの統一性を保つために、条件付きタグ has_excerpt() を使用して、手動で抜粋した投稿に新しいCSSルールを適用または適用します。条件付きタグは、投稿が抜粋フィールドを使用しているかどうかをチェックします(手動で抜粋します)。

これらの投稿に条件付きCSSルールを適用し続けることができるように、手動の抜粋(画像とテキストが入力された抜粋フィールド)をすべて削除し、同時にそれらの投稿にラベルを付けます。たとえば、 has_tag() を使用します。

これらの投稿は他の投稿とは少し異なる画像を持っているので、これを行いたいのですが、それらには少し異なるCSSルールを適用する必要があります。

今では何千もの投稿があるので、それらをすべて手動で実行するのは面倒です。いくつかのSQlコマンドを使ってこれを行う簡単な方法があると確信しています。

  1. 手動による抜粋(抜粋フィールドに画像とテキストが入力されている)を持つすべての投稿にタグ(または他のラベルの方が良いと思われる)を追加します。
  2. すべての投稿の抜粋フィールドの内容を削除します。
2
Vila

いくつかの質問はこのスタックを検索していくつかの回答をまとめて簡単に解決できます。

次のプラグインは有効化されると変換コードを実行します。 $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 ); 
    }
}
2
brasofilo