子テーマに変更したらログインできない

2015年2月17日火曜日

Web

t f B! P L
WordPressで子テーマを作って有効にした時、管理画面にログインできなくなることがありました。その時の原因と解決方法の忘備録です。

子テーマの構成

ネットや公式ページの情報を参考に、子テーマを作って有効にしました。子テーマは、図のようにthemesディレクトリにst5_cdというディレクトリを作成し、style.cssとfunctions.phpのみを入れました。
子テーマのディレクトリ


 style.cssとfunctions.phpには次のように必要最低限の内容のみを記述していました。
@charset "UTF-8";
/*---------------------------------------------------------
Theme Name: st5_cd
Description: stinger5 child
Template: stinger5ver20141227
---------------------------------------------------------*/
<?php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );

}
?>


このような構成の子テーマを作成して、管理画面>外観から新しい子テーマ(st5_cd)を有効にすると、とりあえず期待通りに動くのが確認できました。この例の場合は、子テーマではまだ何もしていないので、親テーマ(Stinger5)が今までと変わりなく適用されます。 これで子テーマの枠組みはうまくできたと思い、一旦作業を終えました。 ところが、数時間後に別のPCから管理画面にログインしようとすると、"エラー:予期しない出力によりCookiesがブロックされました。"と表示されて、いつものユーザー名とパスワードでログインできなくなっていました!
ログイン時のエラー表示

ログインできない原因と解決方法

原因

functions.phpの最後に空白や改行が入っていたからでした。
<?php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );

}
?>(この後に空白や改行があると管理画面にログインできなかった)

解決方法

ftpでサーバーにアクセスしてfunctions.phpをダウンロードした後、?>の後の空白や改行を削除して再度サーバーにアップロードすれば問題は解決しました。

とりあえず管理画面に入って元のテーマに戻すには

最初は原因がわからなかったので、次の手順でとりあえずテーマを元に戻しました。

元のテーマに戻す手順

1. ftpでサーバーにアクセス 2. 子テーマのディレクトリを一時的に別の名前に変える、もしくは削除する。(テーマが選択されていない状態になるので、ブログの表示は崩れる。) 3. 一旦ブラウザを終了して再起動する。(再起動しないと管理画面のエラーが消えない場合がある。) 4. 管理画面に行く。 5. エラーが消えて普通にログインできる。 6. 管理画面>外観から元のテーマを有効化する。

このブログを検索

QooQ