疑問
WordPressの固定ページにショートコードを書いて、get_postで読み込ませたけどショートコードがそのまま表示されてしまう。
コンテンツを適宜編集できるように、固定ページを読み込ませている場合に起きてしまいます。
固定ページを読み込んで中身を表示させる方法を紹介しましたが、読み込んだページでショートコードを使っていても内容がそのまま表示されてしまいます。
-
固定ページの本文だけを抜き出して表示したい場合
固定ページの本文だけ(タイトルなし)を抜き出してトップページなどに表示したい場合のコードです。 // //固定ページの本文だけを抜き出して表示したい場合 // $page_data = get_pag ...
get_postで読み込んだ中のシートコードが実行されない場合
対応はとてもシンプルです。
読み込んだ中身を「do_shortcode()」で出力するだけです。
//
//固定ページの本文だけを抜き出して表示したい場合
//
$page_data = get_page_by_path('固定ページのスラッグ');
$page = get_post($page_data);
$content = $page -> post_content;
echo do_shortcode($content);
これでショートコードが変換されて出力されます。
ただし、問題点もあります。
ショートコードだけのページならいいのですが、他のHTMLタグなどを含んでいると、ショートコードが先に変換表示され、その後にまとめてHTMLタグが表示されます。
例えば、固定ページの内容を下記のように書いた場合でも、
固定ページの内容
HTMLタグ1
ショートコード1
HTMLタグ2
ショートコード2
do_shortcodeでを使うと下記のようになってしまいます。
表示される内容
ショートコード1
ショートコード2
HTMLタグ1
HTMLタグ2