
WPホームページ研究所運営サポートチーム監修のオムスビ(@OMUSUVIcom)です。
SEOランディングページ(無料版)でエラーが発生していたので対応させていただきました。有料版の改善作業をメインに取り組んでいたので無料版の一部が更新できていませんでした。大変失礼いたしました。また同時にお知らせいただいたL様に心より感謝申し上げます。詳しくエラーも記載いただきありがとうございます。
目次
SEOランディングページ(無料版)で出ていたエラーを改善する方法
SEOランディングページの無料版で発生していたエラーはバージョン1.1.1で対策済みです。もし現時点でまだエラーが表示されている場合は管理画面からバージョンアップをお試しください。バージョンアップ方法は本記事の最下部に掲載しておりますのでお急ぎの方は最下部までスクロールして手順をご確認くださいませ。
本日はエラーが出ていた箇所をメモとして解説していきます。まずはじめにSEOランディングページには有料版と無料版の2種類をご用意しています。SEOランディングページは無料版でもたくさんの機能が揃っていますが有料版であればさらに細かな設定ができるようになっています。まずは無料版からお試しくださいませ。
エラーが出ていた箇所の解説
今回対策したエラーの大半はデバッグモードでのみ発生していました。ちなみにデバッグモードは開発者しか使わないモードなので通常運営時では使いません。なお、デバッグモードを有効にする方法は「wp-config.php」内にあるdefine( 'WP_DEBUG', false );
をdefine('WP_DEBUG', true);
にする必要があります。
config.phpの4行目のエラー
SEOランディングページを有効化すると「テーマオプション」という独自メニューが追加されます。独自メニューを追加するためのconfig.phpに以下の記述があったのがエラー対象になっていました。
// ERR_BLOCKED_BY_XSS_AUDITOR エラー対策
header('X-XSS-Protection: 0');
上記は「Googleクローム」で一時期データが保存できないバグがありそれらの回避策としての記述でした。ブラウザも日々進化しているので途中で記述は不要になりましたが残ったままになっていたのが原因です。
// ERR_BLOCKED_BY_XSS_AUDITOR エラー対策
//header('X-XSS-Protection: 0');
ただ、将来的にまた特定のブラウザで同じ現象が起こり得るので今回はコメントアウトといたしました。
テーマオプションを追加するスクリプトのエラー
管理画面に独自メニューを追加する際にadd_submenu_page();
を使用しています。その際の引数で権限を数値で指定していた点がエラー対象になっていました。ワードプレスは途中からユーザーレベルを数値で指定するのが非推奨になっています。権限の指定は現在は数値ではなく権限名で行う必要があります。
add_submenu_page("themes.php", 'オプション設定', 'テーマオプション', 10, 'site_settings', 'create_custom_menu_page', '', 99);
引数の指定も一部誤っていたので修正をいたしました。
add_submenu_page("themes.php", 'オプション設定', 'テーマオプション', 'administrator', 'site_settings', 'create_custom_menu_page');
自動でサンクスページに飛ばす処理でのエラー
SEOランディングページには「お問い合わせフォーム(Contact Form 7)」を送信すると自動でサンクスページに転送(リダイレクト)される機能があらかじめ搭載されています。少し前まではContact Form 7ではお問い合わせ完了時にサンクスページに転送する際に以下のスクリプトが使われていました。
on_sent_ok:"location='http://example.com/thanks/';"
しかし、上記の方法は2018年に廃止となり、最新のContact Form 7では動作しなくなりました。しばらく使われてきた方法だったためサンクスページ転送する情報がウェブ上に多く残っており、どれが正しいのか判断がつかない状況となったのでSEOランディングページでは異なる方法で自動転送を実装済みにしています。
つまり、SEOランディングページは「トップページ(/)に設置されたフォーム」と「お問い合わせページ(/contact)に設置されたフォーム」が送信されたら自動で「/thanks」に転送がかかります。
この際の設定を一部記述漏れがあり、エラーが発生していました。詳しく言うとトップページ用の処理で使うグローバル関数を書き忘れていたのが原因です。下記の通りトップのグローバル関数が抜けていました。
//お問い合わせフォームの送信後にサンクスページへ飛ばす
add_action( 'wp_footer', 'redirect_thanks_page' );
function redirect_thanks_page() {
global $contact;
global $thanks;
if( is_page(array($top , $contact))) {
?>
<script>
document.addEventListener( 'wpcf7mailsent', function( event ) {
location = '<?php echo home_url('/'.$thanks); ?>'; // 遷移先のURL
}, false );
</script>
<?php }
}
修正後がこちらです。
//お問い合わせフォームの送信後にサンクスページへ飛ばす
add_action( 'wp_footer', 'redirect_thanks_page' );
function redirect_thanks_page() {
global $top;
global $contact;
global $thanks;
if( is_page(array($top , $contact))) {
?>
<script>
document.addEventListener( 'wpcf7mailsent', function( event ) {
location = '<?php echo home_url('/'.$thanks); ?>'; // 遷移先のURL
}, false );
</script>
<?php }
}
有料版の修正を優先していることもあり、無料版への反映作業を忘れていました。失礼いたしました。
header.phpで一部記号の記述漏れエラー
header.php内でbloginfo();
の引数に記述忘れ(シングルクォーテーション漏れ)があったのが原因です。
<h1><?php echo bloginfo( description ); ?></h1>
<div class="logo"><a href='<?php echo esc_url( home_url( '/' ) ); ?>' title='<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>' rel='home'><img src='<?php echo get_the_logo_image_url(); ?>' alt='<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>'></div></a>
<?php else : ?>
<h1><?php echo bloginfo( description ); ?></h1>
<div class="logo"><a href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php echo bloginfo( name ); ?></a></div>
以下の部分です。
//シングルクォーテーションの書き忘れ
bloginfo( description );
bloginfo( name );
随分と昔に書いた部分なのでツッコミどころが満載です。
//シングルクォーテーションを付け足し
bloginfo( 'description' );
bloginfo( 'name' );
現時点ではシングルクォーテーションを足してエラーを回避しましたがbloginfo();
は一部非推奨の書き方でもあるので将来的には異なる書き方へ変更する予定(ゆっくり時間がとれる際に対応する見込み)です。
headに追加の条件分岐でエラー
無料版のみ記述が中途半端な状態になっていて以下の条件分岐が正しく動作していませんでした。修正後は以下のスクリプトを差し込んでいますので「headに追加」が正常に動いていますのでご安心くださいませ。
function insert_add_head() {
if (is_page() || is_single()) {
if (have_posts()) : while (have_posts()) : the_post();
echo get_post_meta(get_the_ID(), '_add_head', true);
endwhile; endif;
rewind_posts();
}
}
まとめ
本日はざっと発生していたエラーの詳細をまとめて解説させていただきました。ワードプレスはプログラミングを学ぶには最適なフレームワークです。どういった仕組みで動いているのかなども今回の記事を見ると流れが掴みやすいのでぜひこの機会に覚えてください。テーマのアップデート方法は下記のリンク先にあります。
最新式の無料プラグインを事前公開
WordPressは公式サイトに登録済みのプラグインだけで全機能を補足しきれません。当サイトでは使いやすさを追求した魅惑的なプラグインを無料でダウンロードいただけます。運営ホームページのマーケティング力をさらに高めるチャンスです。まずは無料でDLしてお試しくださいませ。
→ 改良されたプラグインを確認する