【WordPress】記事データ内のHTMLエンティティ文字列を絵文字に一括変換する

WordPressロゴ Web制作

DBの記事データに絵文字部分がHTMLエンティティ文字列として入ってしまっている場合、絵文字に一括で置き換える方法です。

1. functions.phpに処理を追加

/テーマディレクトリ/functions.phpに以下の内容を追記します。

function convert_entities_to_emojis() {
    global $wpdb;

    // wp_postsテーブルから記事データを取得
    $posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_content LIKE '%&#%';");

    foreach ($posts as $post) {
        // HTMLエンティティを絵文字に変換
        $converted_content = html_entity_decode($post->post_content, ENT_NOQUOTES, 'UTF-8');

        // 更新クエリを実行
        $wpdb->update(
            $wpdb->posts,
            ['post_content' => $converted_content],
            ['ID' => $post->ID],
            ['%s'],
            ['%d']
        );
    }

    echo "変換が完了しました。";
    exit;
}
// 管理画面にアクセスしたときに実行
add_action('admin_init', 'convert_entities_to_emojis');

2. 管理画面にアクセスする

管理画面にアクセスすると、先程追記した処理が実行され、データベース内のHTMLエンティティ文字列が絵文字に置換されます。

3. 処理を削除

データベース内の書き換えが完了したら、functions.phpに追記した部分を削除して元の状態に戻します。

タイトルとURLをコピーしました