22 3月 2019
WordPress ショートコードが表示されないを解決

WordPressで、トップページのURLやテンプレートファイル内にある画像などを
固定ページや投稿ページから簡単に呼び出すショートコード。
テストディレクトリでテストして、本アップ時にURLが変わるときなどは便利です。
設定準備
まずは
function.php に以下を追加
<!-- ベースURL(トップページ) -->
function shortcode_url() {
return get_bloginfo('url');
}
add_shortcode('url', 'shortcode_url');
<!-- テンプレートURL -->
function shortcode_templateurl() {
return get_bloginfo('template_url');
}
add_shortcode('template_url', 'shortcode_templateurl');
例:トップページへのリンク
固定ページで、使いたいところに [url] を記述
<a href="[url]">トップページへ</a>
出力結果
<a href="http://es.istgut.jp">トップページへ</a>
例:テンプレートURLの呼び出し
固定ページで、使いたいところに [template_url] を記述
<img src="[template_url]/img/icon.png">
出力結果
<img src=http://es.istgut.jp/wp-content/themes/hoge/img/icon.png">
phpへの記述
page.phpなどでは、テンプレートへの記述は
<?php the_content(); ?>
でショートコードがURLに変換されて出力されます。
トップページのindex.phpなどで特定の固定ページを取得する場合、
<?php
$page_data = get_page_by_path('スラッグ');
$page = get_post($page_data);
$content = $page -> post_content;
echo $content;
?>
ですが、固定ページ内でショートコードを使っていた場合、変換されずに出力されてしまうので、
do_shortcode で取得します。
<?php
$page_data = get_page_by_path('スラッグ');
$page = get_post($page_data);
$content = do_shortcode($page->post_content);
echo $content;
?>
でオッケイ。