【WordPress】get_postで読み込んだ中のシートコードが実行されない

2021年6月7日

当サイトはアフィリエイト広告を利用しています。

疑問

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

-ワードプレス
-, ,