ワードプレスの PHP で改行されない時の解決方法

PHPで改行されない時の解決方法の解説ページのアイキャッチ

ワードプレスの PHP で改行ができない!

こんな問題に遭遇したことはありませんか?

割と初歩的な話なのですが、かなりの人がハマる問題なのではないかと思います。特にワードプレスの PHP だと陥りやすい問題です。実際に私も printf に改行コード(\n)を指定しているのに改行されなくて困ったことがあります。

このページではこのようにワードプレスの PHP で改行できないときの対処法について解説したいと思います。

改行されないときの PHP プログラム

私が実際にハマったときの PHP のソースコードは下記のようなものです。ウェブサイトのトップページを表示するときにこの PHP が動作して HTML を生成してページ表示することを想定したものになります。

index.php
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>TestTheme</title>
    </head>
    <body>
        <?php
        printf("ようこそ!\n");
        printf("これはトップページです\n");
        printf("いろんなページ見て行ってください!\n");
        ?>
    </body>
</html>

ちゃんと改行してますよね?でもウェブブラウザで表示してみると…

改行されない時のページ表示

全然改行されてない!

ページのソースを表示してみると…

index.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 ファイルは下記のようになります。

変更後の index.php
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>TestTheme</title>
    </head>
    <body>
        <?php
        printf("ようこそ!<br>");
        printf("これはトップページです<br>");
        printf("いろんなページ見て行ってください!<br>");
        ?>
    </body>
</html>

表示結果は下のようになりました。しっかり改行が行われたページが表示されています!改行される時のページ表示

ページのソースを表示してみると今度は HTML のソースで改行が行われていませんね。

変更後の index.html
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>TestTheme</title>
    </head>
    <body>
        ようこそ!<br>これはトップページです<br>いろんなページ見て行ってください!<br>    </body>
</html>

これは、今度は PHP が HTML 生成時に改行を行うための改行コードが ‘\n’ が抜けているためです。

HTMLで改行されないケース

HTML がページ表示するときは、改行するかどうかは <br> で判断しますのでページ表示が行われるため、この HTML でも問題ないのですが、HTML のソースとしてはちょっと読みにくいですね。

ページ表示時も HTML のソースでも両方で改行を行うためには <br> と “\n” 両方記述する必要があります。

HTMLとページ表示両方で改行されるケース

PHP としては下記のようになります。

変更後の index.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 のソースとしても読みやすくなりましたね。

変更後の index.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 にどのような記述を行うべきかを考慮しながらプログラミングすることが重要です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です