意外と便利なショートコード
2009/06/18 (Thu)
WordPress2.5から追加されたショートコードをご存知でしょうか。
簡単に言えば、記事中から関数を呼びだすようなものなんですが、これが結構便利なのでよく使っています。
WordPressを普通にブログとして使っている分には、まったく関係ないですが、CMSとして使っていると、どうしてもPHPを実行させたい時があります。
プラグインのrunPHPを使ってもいいですが、あまり詳しくない方に記事を書いてもらう場合、ちょっと危険です。
また、bloginfo()を使いたいことも、しょっちゅうあります。
こんなときに、ショートコードを使うと便利です。
使用中のテーマにあるfunctions.phpに以下のコードを書きます。
そして、記事に
と書きましょう。すると表示する際に
として出力されます。
template_url の部分は、bloginfo() の引数なら何でも使えますので、[bloginfo arg="url"]なども使えます。
functions.phpに以下のコードを追加します。
記事に
と書けば、記事のリストが5件表示されます。
にすると、カテゴリIDが2の記事を3件表示します。
このようにrunPHPを使わなくても、結構いろんなことが出来ます。
他にもカスタムフィールドをテーブルで表示させたり、wp_* の関数を呼び出したりと色々使い道があるので、ぜひ活用してみてください。
ショートコードの詳細は、ショートコード APIをご覧ください。
簡単に言えば、記事中から関数を呼びだすようなものなんですが、これが結構便利なのでよく使っています。
WordPressを普通にブログとして使っている分には、まったく関係ないですが、CMSとして使っていると、どうしてもPHPを実行させたい時があります。
プラグインのrunPHPを使ってもいいですが、あまり詳しくない方に記事を書いてもらう場合、ちょっと危険です。
また、bloginfo()を使いたいことも、しょっちゅうあります。
こんなときに、ショートコードを使うと便利です。
記事中で bloginfo() を使いたい場合
使用中のテーマにあるfunctions.phpに以下のコードを書きます。
function sc_bloginfo($atts, $content = null) {
extract(shortcode_atts(array(
'arg' => ''
), $atts));
return get_bloginfo($arg);
}
add_shortcode('bloginfo', 'sc_bloginfo');
そして、記事に
<img src="[bloginfo arg="template_url"]/img/sample.jpg" alt="" />
と書きましょう。すると表示する際に
<img src"http://www.example.com/wp-content/themes/default/img/sample.jpg" alt="" />
として出力されます。
template_url の部分は、bloginfo() の引数なら何でも使えますので、[bloginfo arg="url"]なども使えます。
現在の記事と同じカテゴリの記事リストを表示したい場合
functions.phpに以下のコードを追加します。
function sc_list($atts, $content = null) {
global $post;
$cur_cat = array_shift(get_the_category());
extract(shortcode_atts(array(
'num' => 5,
'cat' => $cur_cat->cat_ID,
'format' => 'Y/m/d'
), $atts));
$myposts = get_posts('numberposts=' . $num . '&order=DESC&orderby=post_date&category=' . $cat);
$ret = '';
foreach ($myposts as $post) {
setup_postdata($post);
$ret .= sprintf('<li><a href="%s">%s</a> <span class="published">%s</span></li>',
get_permalink(),
get_the_title(),
get_the_time($format));
}
return $ret;
}
記事に
[list /]
と書けば、記事のリストが5件表示されます。
[list num="3" cat="2"]
にすると、カテゴリIDが2の記事を3件表示します。
このようにrunPHPを使わなくても、結構いろんなことが出来ます。
他にもカスタムフィールドをテーブルで表示させたり、wp_* の関数を呼び出したりと色々使い道があるので、ぜひ活用してみてください。
ショートコードの詳細は、ショートコード APIをご覧ください。




