この記事は最終更新日から2年以上が経過しており、情報が古くなっている可能性があります。

WordPressにてショートコードを作ります。
まずはfunctions.phpに以下のコードを書きましょう。

function 関数名( $atts ) {
実行内容
}
add_shortcode( 'ショートコード名', '関数名' );

以上がショートコードの基本形になります。

引数を設定したい場合は以下の通りに記述します。

function 関数名( $atts ) {
extract(
shortcode_atts(
array(
'引数名' => '引数',
),
$atts
)
);
return "$引数名";
実行内容
}
add_shortcode( 'ショートコード名', '関数名' );

引数のあるショートコードの書き方は以下の通りになります。

[ショートコード名 引数名="引数" /]

「カテゴリIDを引数で指定して、カテゴリ別新着記事一覧を表示する」というショートコードの例を挙げておきます。

function postlist( $atts ) {
extract(
shortcode_atts(
array(
'categoryid' => '1',
),
$atts
)
);
global $post;
$retour = '<table>';
$categorys = array($categoryid); for ($i=0; $i<count($categorys); $i++):
query_posts('showposts=6&cat='.$categorys[$i]);  if (have_posts()) : while (have_posts()) : the_post();
$cat = get_the_category();
$catname = $cat[0]->cat_name;
$catslug = $cat[0]->slug;
$catnicename = $cat[0]->category_nicename;
$cat_id = $cat[0]->cat_ID;
$current_cat = '';
foreach ( $cat as $cat ) { if ( ! $current_cat || cat_is_ancestor_of( $current_cat, $cat ) ) { $current_cat = $cat; } };
$retour.='<tr class="row-1">
<td>'.get_the_date().'</td>
<th><a href="'.get_category_link( $current_cat ).'" class="category category'.$cat_id.'">'.$catname.'</a></th>
<td><a href="'.get_permalink().'">'.the_title("","",false).'</a></td></tr>';
endwhile;
else:;
$retour.= '<tr><td>none</td></tr>';
endif;
endfor;
$retour.= '</table>';
return $retour;
}
add_shortcode( 'post_list', 'postlist' );
[post_list categoryid="1" /]

ショートコードにechoは使えないそうです。