日記

WordPress ショートコードで記事内にいろいろ仕込む

ショートコードたまに作りたくなるけど、結構忘れるのでメモっておこうと思います。
function.phpに以下を追記。

//一番単純なショートコード
function helloFunc() {
    return echo "ハローワールド!";
}
add_shortcode('hello', 'helloFunc');

記事内には [hello] を書き込みます

ハローワールド! と出ればOKです。
複数行に渡るタグを入れることも可能です。
広告コードなどを表示させたいときに使えます。
function.phpに追加した部分を以下に書き換え

//タグを出すだけのショートコード
function shortFunc() {
    return '
<p>ここにタグを書き込む</p>
';
}
add_shortcode('hello', 'shortFunc');

続いて、テンプレートタグを使ってみましょう。
function.phpに追加した部分を以下に書き換え

//ブログ名を出すだけのショートコード
function shortFunc() {
    return get_bloginfo('name');
}
add_shortcode('hello', 'shortFunc');

続いてパーツのPHPを呼び出してみましょう


function shortFunc() {
  ob_start();
  get_template_part('roop'); 
  return ob_get_clean();
}
add_shortcode('hello', 'shortFunc');

roop.php

<ul>
<?php
$args = array( 
'post_type' => 'post', // カスタムポスト名
'posts_per_page' => 3 // 投稿件数の指定
);
$the_query = new WP_Query($args);
if($the_query->have_posts()):
?>
<?php while ($the_query->have_posts()): $the_query->the_post(); ?>

<li>
<a href="<?php the_permalink(); ?>">
<span class="news-left sc-item fadein"><?php the_time('Y.m.d'); ?></span>
<span class="news-right sc-item fadein"><?php the_title(); ?></span>
</a>
</li>

<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
<?php else: //投稿がない場合 ?>
<li>記事がありません</li>
<?php endif; ?>
</ul>

記事の一覧を呼び出すサブループです。
パーツ呼び出しにすると、呼び出す側にいつもの書き方でPHPファイルとして作成すればいいのでとてもやりやすいです。
PHPのプログラム書くときも、functionではなくphpファイルとして作ってみちゃいましょう。