WordPressカスタマイズ

RTOCが入っているWordPressでデザインが崩れて500エラーが発生する

気づいたのは今さっきのことだったのですが、raspiブログで急激にユーザー数が低下しました。

原因はRTOCでした。

同じような状況の人は参考にしてみてください。

状況

WordPressでRTOCが表示されるページを開くとデザインが崩れる、なんか画面の中に小さな枠ができる、表示はできるけど500番エラーが発生する。

経緯

原因を探すと、raspiブログのページの一部がGoogleのインデックスから除外されていたためでした。その詳細には500番台のエラーとなっていました。WordPressをデバッグモードにすると、一番下にFatal Errorと表示されました。

Fatal error: Cannot redeclare followwidget_delete()

followwidget_delete()が複数回定義されてるようです。調べると、

if (!function_exists('followwidget_delete'))

を使用することで回避することができるようです。この条件式はfollowwiget_deleteが定義されてないときに実行されます。今回は1188行目に問題のコードがあったので次のように改変しました。

改変前

// JINへの対応
    $get_theme_name    = wp_get_theme();
    $theme_name  = $get_theme_name->get('Name');
    if($theme_name == 'jin-child' || $theme_name == 'JIN' ){
        if(is_single() || is_page()){
            function followwidget_delete()
            {
                wp_deregister_script('cps-followwidget');
            }
            add_action('wp_enqueue_scripts', 'followwidget_delete', 100);
            wp_enqueue_script('rtoc_js_followwidget', plugin_dir_url(__FILE__) . 'js/rtoc_followwidget.js', array('jquery'), false, true);
        }
    }

改変後

// JINへの対応
    $get_theme_name    = wp_get_theme();
    $theme_name  = $get_theme_name->get('Name');
    if($theme_name == 'jin-child' || $theme_name == 'JIN' ){
        if(is_single() || is_page()){
            if (!function_exists('followwidget_delete')) {
            function followwidget_delete()
            {
                wp_deregister_script('cps-followwidget');
            }
            }
            add_action('wp_enqueue_scripts', 'followwidget_delete', 100);
            wp_enqueue_script('rtoc_js_followwidget', plugin_dir_url(__FILE__) . 'js/rtoc_followwidget.js', array('jquery'), false, true);
        }
    }

 

原因

根本的にエラーが発生した原因はWordPressの更新ではないかと思います。理由はつい最近WordPressを6.0に更新したからという理由だけですが。WordPressの更新は軽率に行わない方がいいかもしれません。

気になるアイテム



COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です