wordpress

[wordpress]テーマ内の好きな箇所に固定ページの内容を表示させる方法

wordpress

固定ページの内容をサイドバーに表示しようとしたら、一部のAndroid端末やiPadの初期型などで ページ内で使用しているhtmlタグがそのまま表示されてしまうという問題があり悩んでいたんですが、やっと解決したので記事にします。

症状

<?php
$page_id = XXX;
$page = get_page($page_id, 'OBJECT' , edit); 
$page_include = apply_filters( 'the_content',$page->post_content); 
echo $page_include; 
?>

上記の書き方だと、前述したとおり一部の端末でhtmlタグがそのまま表示されてしまうのです。

  • 海で
  • 焼きそばと
  • ラーメン片手に
  • ビール飲みたい

こうなるはずが、

<ul>
<li>海で</li>
<li>焼きそばと</li>
<li>ラーメン片手に</li>
<li>ビール飲みたい</li>
</ul>
こうなる。。

PCや比較的あたらしめのスマートフォン・タブレットでは大丈夫だったんですが、 初期型のiPad、Android2.3あたりの端末、それからGoogleChromeのUA偽装のiOSなどで前述の症状が見られました。エスケープしちゃってるのかな。。

記述方法

固定ページの内容を表示させたい場所に以下のコードを記述すればOKです。 WordPress 3.5.0からget_pageが非推奨になったとのことで、 かわりにget_postを使っています。

テーマ内
<?php
$page_id = XXX;//ページID
$page= get_post($page_id);
echo apply_filters('the_content', $page->post_content);
?>

そしてecho $page->post_content;は避けた方がよいという記事を教えていただいたので、 最後の行を参考サイトの通りapply_filtersというのに書き換えました。

参考:本当は怖い WordPress – echo $post->post_content; を避ける3つの理由 はてなブックマーク - 本当は怖い WordPress - echo $post->post_content; を避ける3つの理由

参考:WordPressで一部のAndroid端末やiPhone端末で表示がおかしくなった原因 | ユニキャストラボ はてなブックマーク - WordPressで一部のAndroid端末やiPhone端末で表示がおかしくなった原因 | ユニキャストラボ

さいごに

これ、どんな時に使ってるのかというと、TOPページに置くスライド画像やカスタムタクソノミーのピックアップリスト(手動)などなど、 クライアントさんからその箇所を自分で編集したいという要望があったときに使っています。

テーマを触られたくないのでこうしてるんですが、他にいい方法をご存知の方がいたら教えてもらえると嬉しいです。
以上、霙(@xxmiz0rexx)でした!

みぞれーめもめも
data

今年の初海、女子3人組でいってきました!! 幸い雨にも降られずw、水は冷たかったけど楽しかった♪

砂浜にwebimemoマーク( ˘ω˘ )♡

なめこもたくさん描いて、ビーチが私たちのイラストだらけになって子供が( ゚д゚)ポカーンてしててちょっとワロタww