ショートコード

基本のショートコード

function hoge_func() { return '
<div class="box">
    <p>hoge</p>
    <p>hoge</p>
    <p>hoge</p>
</div>
';} add_shortcode('hoge', 'hoge_func');

ショートコード呼び出し

// 本文中で呼び出し
[hoge]

// テンプレートファイルで呼び出し
<?php echo do_shortcode('[hoge]'); ?>

ショートコードの定義にテンプレートタグを使用する

function hoge_func() {
$html = '
<ul>
  <li><a href="' . home_url() . '/hoge/">hoge</a></li>
  <li><a href="' . home_url() . '/hoge/">hoge</a></li>
  <li><a href="' . home_url() . '/hoge/">hoge</a></li>
</ul>
';
return $html;
}
add_shortcode('hoge', 'hoge_func');

属性ありのショートコード(任意の値を渡すショートコード)

function my_tagfunc( $atts ){
  return '<p>' . $atts['name'] . 'は、' . $atts['price'] . '円です。</p>';
}
add_shortcode( 'my_tag', 'my_tagfunc' );
[my_tag name="食パン" price="100"]

カスタム投稿の内容をショートコードで呼び出し

function get_customPost_info($attr)
{
  $customPost = isset($attr['customPost_id']) ? get_post($attr['customPost_id']) : null;
  if($customPost && $customPost->post_type === 'customPost') {
    $thumbnail_id = get_post_thumbnail_id($customPost->ID);
    $thumbnail_src = wp_get_attachment_image_src($thumbnail_id, 'thumbnail');
    $html = '<div class="customPost-box"><h3>店舗情報</h3>';
    $html .= '<div class="customPost-wrap">';
    $html .= '<a href="' . get_permalink($customPost->ID) . '"><img src="' . $thumbnail_src[0] . '" alt=" ' . $customPost->post_title . ' ">';
    $html .= '<div class="customPost-right">';
    $html .= '<p class="customPost-name"><a href="' . get_permalink($customPost->ID) . '">' . $customPost->post_title . '</a></p>';
    $html .= '<table>';
    $html .= '<tr><th>電話</th><td>' . get_field('tel', $customPost->ID) . '</td></tr>';
    $html .= '<tr><th>住所</th><td>' . get_field('address', $customPost->ID) . '</td></tr>';
    $html .= '<tr><th>アクセス</th><td>' . get_field('access', $customPost->ID) . '</td></tr>';
    $html .= '</table>';
    $html .= '</div>';
    $html .= '</div>';
    $html .= '</div>';
    return $html;
  }
}
add_shortcode('customPost_info', 'get_customPost_info');

ショートコード呼び出し

// customPost_id に投稿ID を指定
[customPost_info customPost_id="10"]

php テンプレートファイルをショートコードで呼び出し

// tmp/sample.php を読みこみ
function sample_php( $atts ){
  ob_start();
  get_template_part('tmp/sample');
  return ob_get_clean();
}
add_shortcode( 'sample', 'sample_php' );

ショートコード呼び出し

[sample]