WP-membersをWordPressにクリーンインストールしても、WP-Membersオプションタブで「更新設定」をクリックすると表示される「重大なエラー」の修正方法について説明します。
表示されるエラーは下記の通りです。
Fatal error: Uncaught Error: Attempt to assign property "add_checkout_fields" on null in /*******/wp-content/plugins/wp-members/includes/admin/tabs/class-wp-members-admin-tab-options.php:624 Stack trace: #0 /*******/wp-content/plugins/wp-members/includes/admin/tabs/class-wp-members-admin-tab-options.php(592): WP_Members_Admin_Tab_Options::save_settings() #1 /*******/wp-content/plugins/wp-members/includes/admin/admin.php(96): WP_Members_Admin_Tab_Options::update() #2 /*******/wp-content/plugins/wp-members/includes/admin/admin.php(39): wpmem_admin_action() #3 /*******/wp-includes/class-wp-hook.php(308): wpmem_admin() #4 /*******/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters() #5/ *******/wp-includes/plugin.php(517): WP_Hook->do_action() #6 /*******/wp-admin/admin.php(259): do_action() #7 *******/wp-admin/options-general.php(10): require_once('/*******/...') #8 {main} thrown in /*******/wp-content/plugins/wp-members/includes/admin/tabs/class-wp-members-admin-tab-options.php on line 624
「このサイトで重大なエラーが発生しました。対応手順については、サイト管理者のメール受信ボックスを確認してください。」
注: *****はそれぞれのインストール環境によってディレクトリ表示内容は異なります。
修正手順
1. 修正するPHPが書かれているファイルを開く
以下のファイルPHPを開きます。
wp-content/plugins/wp-members/includes/admin/tabs/class-wp-members-admin-tab-options
まず、617行目から623行目を修正します(624行目のエラー修正)
617行目から623行目に書かれている
<li>
<label><?php _e( 'Custom Stylesheet:', 'wp-members' ); ?></label>
<input class="regular-text code" type="text" name="wpmem_settings_cssurl" value="<?php echo $wpmem_cssurl; ?>" placeholder="https://" size="50" />
</li>
を下記ように修正します。
<li>
<label><?php _e( 'Custom Stylesheet:', 'wp-members' ); ?></label>
<input class="regular-text code" type="text" name="wpmem_settings_cssurl" value="<?php echo $wpmem_cssurl; ?>" placeholder="https://" size="50" />
</li>
次に、1247行目を修正する
1247行目に書かれている
$wpmem->woo->{$subkey} = $subval;
を下記のように修正します。
if (isset($wpmem->woo)) {
$wpmem->woo->{$subkey} = $subval;
}
以上で修正完了です。
エラーの原因
624行目のエラー原因
エラーの原因は、WP_Members_Admin_Tab_Optionsクラスのsave_settings()メソッド内で、nullオブジェクトに対してプロパティを割り当てようとしているためです。
具体的には、”add_checkout_fields”というプロパティを割り当てようとしています。
このエラーを修正するには、save_settings()メソッド内のコードを調べて、nullオブジェクトに対してプロパティを割り当てる行を特定し、そのプロパティの定義方法を修正する必要があります。
また、エラーが発生する行の前後のコードも確認する必要があります。
1247行目のエラー原因
$wpmem->wooがnullであるため、プロパティ”add_checkout_fields”に値を割り当てることができない状態です。
したがって、最初に$wpmem->wooがnullでないことを確認する必要があります。
まとめ
WP-Membersオプションタブで「更新設定」をクリックすると表示される「重大なエラー」を修正するには、
wp-content/plugins/wp-members/includes/admin/tabs/class-wp-members-admin-tab-options
にある以下の行にあるPHPコードを書き直せばOKです。
- 617行目から623行目
- 1247行目
以上です。