現在のWordPressはバージョン5.0になってからは既にブロックエディタとなっています。それまでは、クラシックエディタやTinyMCEプラグインなどを使用してビジュアルエディタとして記事投稿やサイト作成をしてきました。現在でも、以前に書いた投稿記事内容は何もしなければクラシックエディタかビジュアルエディタ形式のままになっています。ブロックエディタでなければ使用できないプラグインや目次プラグインなどもあります。また、今後のことも踏まえると、そろそろクラシックエディタやビジュアルエディタ形式の記事はブロックエディタ化しておいた方が良いのではないかと感じました。
そのような時に、まずはプラグインにて可能なのか否かを調べてみる方々が大半かと思われます。実際の使用方法はわかりませんが、Convert to Blocksというプラグインがあります。
Convert to Blocksプラグインダウンロードサイトは以下になります。
上記サイトにてブロックエディタへの変換方法など動画付きで解説されていたりもします。しかし、実際のところちょっと一手間二手間かかるように感じました。
他にも、以下のサイトにクラシックエディタからブロックエディタへの変換の仕方があります。ですが、過去の記事ひとつひとつを編集にて開いて、ブロックエディタへの変換をしなければなりません。
そこで、これまでの(WordPressのバージョンが5.0になる前の記事すべて)クラシックエディタ・ビジュアルエディタ形式の投稿内容をブロックエディタへ一括変換できないかと考えてみました。
一番良い方法はプラグイン化するのが良いかと思われますが、一度ブロックエディタへ変換してしまえば後は不要になってしまうのかなとも考えました。そこで、これまでのクラシックエディタ・ビジュアルエディタ形式の投稿記事のバックアップを取り復元も可能な状態にしてから、ブロックエディタへの変換をできないかと・・・。ブロックエディタ化に失敗した場合でもバックアップがあるので、バックアップから復元も可能な状態にしておくという具合です。
結論から申し上げると、以下のコードにてバックアップをしてからクラシックエディタからブロックエディタ一括変換をすることができます。
ただ、各々の投稿記事の編集を開かずに、100%全てをブロックエディタ化してするのは難しいと思われます。テーマによっても若干の違いがあることでしょうし各々の書き方によっても異なってきてしまいます。改行ばかりの投稿内容だったりと・・・。
とりあえずのサンプルコードとして、以下にコードとして記載します。
/**
* クラシック変換ツール(functions.php版)
* 投稿本文のみバックアップ・復元対応
*/
// 安全対策
if ( ! defined( 'ABSPATH' ) ) exit;
// 保存先ディレクトリ
function scb_get_backup_dir() {
$dir = wp_upload_dir()['basedir'] . '/smart-classic-backup/';
if ( ! file_exists( $dir ) ) {
wp_mkdir_p( $dir );
}
return $dir;
}
// ログ出力
function scb_log( $message ) {
$file = scb_get_backup_dir() . 'debug-log.txt';
$time = date_i18n( 'Y-m-d H:i:s' );
file_put_contents( $file, "[$time] $message\n", FILE_APPEND );
}
// 管理者へメール送信
function scb_send_mail( $subject, $body ) {
$admin = get_option( 'admin_email' );
$site = get_bloginfo( 'name' );
wp_mail( $admin, "[$site] $subject", $body );
}
// 投稿本文バックアップ
function scb_backup_posts() {
global $wpdb;
$posts = $wpdb->get_results( "SELECT ID, post_content FROM {$wpdb->posts} WHERE post_type = 'post'" );
$data = [];
foreach ( $posts as $p ) {
$data[ $p->ID ] = $p->post_content;
}
$file = scb_get_backup_dir() . 'backup-' . date_i18n( 'Ymd-His' ) . '.json';
file_put_contents( $file, wp_json_encode( $data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT ) );
scb_log( "バックアップ完了: $file" );
scb_send_mail( '投稿本文のバックアップ完了', "バックアップを作成しました。\n\n$file" );
return $file;
}
// 最新バックアップファイルを取得
function scb_get_latest_backup() {
$files = glob( scb_get_backup_dir() . 'backup-*.json' );
return $files ? array_pop( $files ) : false;
}
// 最新バックアップから復元
function scb_restore_latest_backup() {
global $wpdb;
$latest = scb_get_latest_backup();
if ( ! $latest ) {
scb_log( '復元失敗:バックアップが見つかりません。' );
return false;
}
$json = json_decode( file_get_contents( $latest ), true );
foreach ( $json as $id => $content ) {
$wpdb->update( $wpdb->posts, [ 'post_content' => $content ], [ 'ID' => $id ] );
}
scb_log( "復元完了: $latest" );
scb_send_mail( '投稿本文の復元完了', "最新のバックアップから復元しました。\n\n$latest" );
return true;
}
// クラシック → ブロック変換処理
function scb_convert_classic_to_block() {
global $wpdb;
$posts = $wpdb->get_results( "SELECT ID, post_content FROM {$wpdb->posts} WHERE post_type = 'post'" );
foreach ( $posts as $p ) {
$content = $p->post_content;
// 例: 改行を <br> に変換・段落化(実際の変換ロジックは用途に合わせて調整可能)
$converted = wpautop( $content );
$wpdb->update( $wpdb->posts, [ 'post_content' => $converted ], [ 'ID' => $p->ID ] );
}
scb_log( '変換処理完了。全投稿をブロック化しました。' );
scb_send_mail( 'クラシック変換完了', "全投稿の本文を変換しました。\n\n詳細は debug-log.txt を確認してください。" );
return true;
}
// 管理バー or 管理画面フックで実行ボタンを追加(任意)
add_action( 'admin_notices', function() {
if ( current_user_can( 'manage_options' ) ) {
echo '<div class="notice notice-info"><h2>🧩 クラシック変換ツール(functions.php版)</h2>';
echo '<p><a href="?scb_action=backup" class="button button-primary">バックアップ作成</a> ';
echo '<a href="?scb_action=restore" class="button">最新バックアップから復元</a> ';
echo '<a href="?scb_action=convert" class="button button-secondary">変換を実行</a></p></div>';
}
});
// アクション実行
add_action( 'admin_init', function() {
if ( ! current_user_can( 'manage_options' ) ) return;
if ( isset( $_GET['scb_action'] ) ) {
$action = sanitize_text_field( $_GET['scb_action'] );
if ( $action === 'backup' ) {
scb_backup_posts();
} elseif ( $action === 'restore' ) {
scb_restore_latest_backup();
} elseif ( $action === 'convert' ) {
scb_convert_classic_to_block();
}
}
});
上記コードを子テーマのfunction.php内に追記することで、WordPress管理画面の左側メニューにブロックエディタ一括変換の管理画面にてバックアップ後に投稿記事の編集を行わなくても、ブロックエディタ一括変換は出来て、かつ管理者用メールアドレスに変換完了時にメール送信することができます。
※function.phpは必ずバックアップを取ってから行ってください。
注意)また、もしもの場合にも備えてサーバー上のデータベースもバックアップも取ってから行ってみてください。
🧭 簡単にまとめた使用方法です。
- 上記コードを functions.php の末尾に貼り付けます。
- 管理画面にログイン。
- 画面上部に「🧩 クラシック変換ツール(functions.php版)」が表示されます。
- ボタンで「バックアップ」「復元」「変換」を実行可能。
- 実行結果は:
/wp-content/uploads/smart-classic-backup/backup-xxxx.json
/wp-content/uploads/smart-classic-backup/debug-log.txt
に保存されます。 - 完了通知が WordPress 管理者メールに送信されます。
という仕様になっています。他にもやり方はあると思われますが、一つの方法としてこのようにコード記載でもブロックエディタ化ができますよという程度に受け取って頂けたら幸いです。
もっともっと、良い方法もきっとあると思いますがブロックエディタ化への変換の悩みの解決の一助になりましたら幸いです。
実際のWordPress管理画面には以下のように表示されます。

あなたにおすすめ
関連記事
-
-
ナビテレビが見れなくなった時ICカードが正常に動作しませんでした対処方法
本日ではなく昨日になってしまいますが、それまでカーナビで地デジ対応のナビで突然エンジンをかけなおしたら・・・・・・。 「ICカードが正常に動作しませんでした。販売店にお問い合わせください。」 なんてい…
-
-
日産ディーラーオプションナビMM316D-WからMM518D-L交換(換装)NISSAN純正ナビリモコン
ある程度、年式がたった車においてはディーラーオプションナビ(DOP)やメーカーオプションナビ(MOP)の地図データが古くなったり、ナビのモニタインチ数が大きくなったりします。地図データが古くなるのはも…
-
-
車のキーナンバー確認方法。キーレス紛失や壊れた時
初めての経験でした。(汗)…。 キーレスエントリー、キーレスリモコンがついた鍵がエンジンを回す時にボキッと折れてしまいました。(汗)…。 プラスチックの本体部分と鉄のキー部分が分裂してしまいました。 …










新着コメント