Amazonで商品を見る セール会場へ

WordPress│テーマ移行時の旧クラスを変換する最小例と確認手順

テーマ変更後の表示崩れは、旧テーマのクラス、ショートコード、画像、スクリプトを分けて調べます。

この記事は独自の互換処理を作る最小例であり、各社の移行プラグインを解析した結果や、SWELLの公式互換コードではありません。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

旧クラスだけを変換する最小例

WordPress 6.2以降で、本文のdiv要素にあるold-boxというクラスだけを独自クラスへ変換します。

変更前の子テーマのfunctions.phpと追加CSSをバックアップし、検証環境で次の関数とフックを追加します。

function waza_legacy_box_content($content) {
    if (!class_exists('WP_HTML_Tag_Processor')) return $content;
    $tags = new WP_HTML_Tag_Processor($content);
    while ($tags->next_tag('DIV')) {
        if ($tags->has_class('old-box')) {
            $tags->remove_class('old-box');
            $tags->add_class('waza-legacy-box');
        }
    }
    return $tags->get_updated_html();
}
add_filter('the_content', 'waza_legacy_box_content', 20);

外観の追加CSSには次のスタイルを追加します。

.post_content .waza-legacy-box { border: 2px solid #476582; padding: 1em; margin-block: 1.5em; border-radius: .25em; }

old-boxは説明用のクラス名なので、旧記事の実際のHTMLを調べて置き換えてください。

掲載CSSは、本文を囲む要素にpost_contentクラスがある場合に適用されます。

別のテーマでそのクラスがない場合は、開発者ツールで本文を囲む要素を確認し、CSS先頭の.post_contentをその要素に合うセレクターへ変更してください。

クラスを変換しても装飾が付かないときは、変換後のwaza-legacy-boxと本文を囲む要素の両方を確認します。

本文中の文字列やold-box-extraなど別のクラスは変換せず、保存済み本文も書き換えません。

ショートコードと旧CSSの扱い

旧ショートコード名と属性、出力HTMLを確認し、新テーマに実在する機能へ個別に対応させます。

存在を確認していないswell_blogcardへの転送コードは使わず、リンクカードは新テーマの編集画面で作り直して表示を比較します。

旧テーマのCSS全体を文字置換して読み込むと、相対画像URLや他の画面へ影響するため、必要な装飾だけを独自クラスへ移植します。

旧テーマの画像を再利用する場合は利用条件とファイルの所在を確認し、自分が管理するメディアURLへ変更します。

Service Workerと検証範囲

すべてのService Worker登録を解除する旧コードは使いません。

キャッシュが疑わしい場合は開発者ツールで登録元とscopeを確認し、その機能の正式な停止手順を検証環境で試します。

このクラス変換例はローカルのWordPressで出力を検証しましたが、各旧テーマのショートコードやレイアウト全体の互換性は未検証です。

確認と戻し方

旧装飾を使う記事でPC・スマホの幅、画像、リンク、キーボード操作を比較します。

戻す場合は今回追加した関数・フックとCSSだけを外し、表示時のクラス変換を止めます。

保存済み本文には旧クラスが残っていますが、その装飾を定義するCSSが新テーマにない場合、旧テーマの見た目までは戻りません。

追加前の状態へ戻すときは、退避したfunctions.phpと追加CSSとの差分を確認し、今回の追加分以外を消さないようにします。

参照:WordPress HTML Tag Processor。

変換後の表示見本

上のPHP関数をローカルで実行して得たHTMLに、同じCSSを適用した見本です。

この見本は変換後のHTMLを表示するもので、閲覧時に旧記事へPHPの変換処理を実行するものではありません。

旧クラスから変換したボックスです。見本の説明へ移動

保存済み本文は変更せず、表示するときのクラスだけを変換します。

旧クラスを変換したボックスとリンクのフォーカス枠をスマホ幅で表示した実画面
掲載見本をスマホ幅で確認した実画面。リンクのフォーカス枠を表示しています。
  • URLをコピーしました!

実装を任せたい方へ

SWELLのカスタマイズ代行

記事のコードをそのまま使うのが不安な場合や、サイトに合わせた調整が必要な場合は当社が実装します。1時間 ¥8,000〜(税込)。テーマ更新に強い書き方で納品します。

WAZAの有料記事のサブスクリプションも開始しました。

サービス

Service

WordPressサイトのカスタマイズのサービスに関心がありましたら、ぜひ詳細をご覧ください。

目次