【WP】子テーマ作ったらワーニングが…?

2018年4月21日WordPressテーマ,トラブル,子テーマ,文字コードWordPress,テーマ,トラブル,子テーマ,文字コード

先日、無料のレンタルサーバーを借りまして、ようやくWP(WordPress)が使えるようになったので、カスタマイズ用に子テーマを作ったところ、なにやらワーニングがでちゃいました。

こんなところにワーニングメッセージ!?

ワーニング表示
ワーニング表示

WPも初めて使うなら、PHPなんかもっと使ったことないのに、早々にこんなエラー出されても対処がわからんですよ。(´・ω・`)

それから子テーマについて。

WP触ったことがある人ならきっと常識なんだと思うけど、要はテーマをカスタマイズしたいときに作る複製。

オリジナルは親テーマとしてそのままにして、カスタマイズは複製側にかけるれば、テーマがアップデートされても影響が少なくて済むよねっ!っていう考え方らしい。

話は戻って、このエラーが原因でどうもWPのメディアライブラリがきちんと動いてない。(画像のアップロードとか表示ができなかった)

ワーニングメッセージの内容は?

メッセージの全文はこれ。※一部パスは消しています

header information – headers already sent by (output started at /home/~~/public_html/~~/twentyseventeen-child/functions.php:9) in /home/~~/public_html/wp-admin/includes/misc.php on line 1116

表示されたきっかけは間違いなくて子テーマ。

といっても、子テーマの作り方を紹介しているサイトを真似ながらstyle.cssfunctions.phpを適用しただけなんですけどね~?

原因は?

結論から言うと function.php の記述に問題があったみたい。
(追記)文字コードが原因でした。

最初に作成したstyle.cssとfunction.phpをSJISで作っちゃったようで、どうも2バイト文字や改行あたりが正しく認識されていなかったようです。

下がそのソース。

<?php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
  wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
  wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array('parent-style'));
}
?>
※←ここに改行

参考サイトと見比べても全く一致している(つーかコピーしてるし…)のに一体何が悪いのか…と、小一時間悩みましたが…。

とあるサイトでPHPのみが記述されたファイルには、コードを閉じるための ?> はいらないって記述を見つけまして、試しに消してみたところワーニングが消えまして、これがヒントになりいろいろ試した結果、直接の原因は ?> の記述ではなくその下に入っていた空改行のせいでしたとさ。

(追記)上にも書きましたが、今回の直接の原因は文字コードのせいでした。UTF-8に変換し再アップロードしたところ問題なく動きました

わかるかよそんなんっ!(ノД`)

…いや、わかっても良さそうな原因だったな_(┐「ε:)_