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

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;
?>

でオッケイ。