ワードプレスの PHP で改行ができない!
こんな問題に遭遇したことはありませんか?
割と初歩的な話なのですが、かなりの人がハマる問題なのではないかと思います。特にワードプレスの PHP だと陥りやすい問題です。実際に私も printf に改行コード(\n)を指定しているのに改行されなくて困ったことがあります。
このページではこのようにワードプレスの PHP で改行できないときの対処法について解説したいと思います。
改行されないときの PHP プログラム
私が実際にハマったときの PHP のソースコードは下記のようなものです。ウェブサイトのトップページを表示するときにこの PHP が動作して HTML を生成してページ表示することを想定したものになります。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>TestTheme</title>
	</head>
	<body>
		<?php
		printf( "ようこそ!\n" );
		printf( "これはトップページです\n" );
		printf( "いろんなページ見て行ってください!\n" );
		?>
	</body>
</html>ちゃんと改行してますよね?でもウェブブラウザで表示してみると…

全然改行されてない!
ページのソースを表示してみると…
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>TestTheme</title>
	</head>
	<body>
		ようこそ!
これはトップページです
いろんなページ見て行ってください!
	</body>
</html>ちゃんと改行されてんじゃん…。なんでページ表示すると改行されないんだろう…
改行されない理由
理由に気づくのに結構時間がかかりました…。でも気づいてみたら非常に簡単な理由でした。
その理由とは、
HTML 表示で行うための改行が行われていない
です。
もっと具体的に言えば、
HTML で改行を行う<br>が出力されていない
ことが理由です。
ここまで言えば解決方法に気づいた人も多いと思います。
先ほどの PHP は HTML を生成してウェブブラウザにページ表示を行うためのものです。ですので、ページ表示に改行が行われるように、つまり、PHP ではなく HTML がページ表示時に改行するように、HTML に改行させる命令(<br>)を記述する必要があるのです。
しかし、先ほどの PHP は HTML 生成時に改行させているだけですので、HTML のソースとしては改行されますが、最終的なページ表示には改行されないようになっていたのです。

スポンサーリンク
解決方法
ここまで読んでくださった方ならきっともう答えに気づいていると思います。
ズバリ、PHP の文字列出力時に HTML の改行命令である <br> を出力すれば解決します。
変更後の PHP ファイルは下記のようになります。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>TestTheme</title>
	</head>
	<body>
		<?php
		printf( 'ようこそ!<br>' );
		printf( 'これはトップページです<br>' );
		printf( 'いろんなページ見て行ってください!<br>' );
		?>
	</body>
</html>表示結果は下のようになりました。しっかり改行が行われたページが表示されています!
ページのソースを表示してみると今度は HTML のソースで改行が行われていませんね。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>TestTheme</title>
	</head>
	<body>
		ようこそ!<br>これはトップページです<br>いろんなページ見て行ってください!<br>	</body>
</html>これは、今度は PHP が HTML 生成時に改行を行うための改行コードが ‘\n’ が抜けているためです。

HTML がページ表示するときは、改行するかどうかは <br> で判断しますのでページ表示が行われるため、この HTML でも問題ないのですが、HTML のソースとしてはちょっと読みにくいですね。
ページ表示時も HTML のソースでも両方で改行を行うためには <br> と “\n” 両方記述する必要があります。

PHP としては下記のようになります。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>TestTheme</title>
	</head>
	<body>
		<?php
		printf( "ようこそ!<br>\n" );
		printf( "これはトップページです<br>\n" );
		printf( "いろんなページ見て行ってください!<br>\n" );
		?>
	</body>
</html>この PHP が生成する HTML は下記のようになります。HTML でも改行されているので HTML のソースとしても読みやすくなりましたね。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>TestTheme</title>
	</head>
	<body>
		ようこそ!<br>
これはトップページです<br>
いろんなページ見て行ってください!<br>
	</body>
</html>今回は <br> を用いて説明を行いましたが、<p> 〜 </p> を用いて段落として表示することでページ表示時に改行を行うことも可能です。
重要なのは HTML として改行が行われるように PHP を記述することですね。特に HTML を生成するワードプレスの PHP だと意外と陥りやすい問題です。ページ表示が上手くいかない時は、生成される HTML だけでなく、その HTML がどのようなページ表示を行うようになるかを考慮して記述することを意識しましょう!
まとめ
今回は PHP で改行が行われない時の問題の解決方法について解説しました。改行されない時は “\n” だけでなく <br> が記述されているかどうかを確認しましょう。特にワードプレスの PHP では、ページ表示する HTML にどのような記述を行うべきかを考慮しながらプログラミングすることが重要です。


