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. 管理画面>外観から元のテーマを有効化する。