add_shortcode

説明

void add_shortcode( string $tag, mixed $func )
ショートコード(独自タグ)を追加する。ショートコードは、投稿記事内でテキスト内容がない[tag]や、テキストを内包する[tag]テキスト[/tag]の書式で使用できる独自タグのこと。標準の状態では、 the_content関数によって表示する直前のフィルター処理内でパラメータ$funcで指定した関数・メソッドが実行される。

パラメータ

  • $tag
    タグ名。
  • $func
    関数名またはメソッドを配列(例:array( $this, 'name' ))で指定。

返り値

返り値はありません。

注意

登録の際パラメータ$funcが有効かどうかを調べるが、無効な場合でもエラーは返らない。また、すでにパラメータ$tagで指定されたショートコードが登録されている場合は上書きされる。
なおパラメータ$funcで指定した関数・メソッドでは、独自処理(テキスト加工)した文字列を返すこと(echoやprint関数を使って表示してはいけない)。

使用例

  • [func_link]というショートコードを追加する。
    <?php
    add_shortcode( 'func_link', 'tag_func_link' );
    function tag_func_link( $atts, $content='' ) {
    	extract( shortcode_atts( array(
    		'target' => '_self',
    		), $atts ) );
    	return '<a href="/function/'.$content.'.html" target="'.
    		attribtue_escape( $target ).'">'.$content.'</a>';
    }
    ?>
  • クラスを使用して[var_link]というショートコードを追加する。
    <?php
    class my_shortcode {
    	function my_shortcode() {
    		add_shortcode( 'var_link', array( $this, 'tag_var_link') );
    	}
    	function tag_var_link( $atts, $content='' ) {
    		return '<a href="/var/'.$content.'.html">$'.
    			$content.'</a>';
    	}
    }
    ?>

最終更新 : 2018年05月27日 10:51



お勧め

Contact Form 7に確認フェーズを(2012年12月16日 更新)

Contact Form 7はWordPressによるサイト製作でお世話になることが多いプラグインの1つ。ただ、クライアント様によっては、入力、確認、送信の3フェーズにしたいという要望があり、そんな時は別の方法を採用していたのですが、JavaScript(jQuery)を使ってページ遷移しなくてもいいなら確認フェーズは用意できるかなと思い、作り込んでみた。

投稿一覧に独自リンクを追加する(2013年10月16日 更新)

管理者ページの「投稿一覧」や「固定ページ一覧」の各投稿記事はマウスポインタを移動すると、「編集」や「クイック編集」といったリンクが表示される。このリンクに独自のリンクを追加する方法を調べてみた。

HTML編集モードに定型文ボタンを追加する(2011年6月1日 更新)

投稿編集ページにはビジュアル編集モードとHTML編集モードがあり、それらを拡張するプラグインも多数存在している。そういったプラグインを利用するのもいいのだが、仕組みを理解するのも悪くないはず。というわけで、ここではHTML編集モードのボタンの仕組みと定型文を挿入するボタンを追加する方法を紹介する。

投稿日の検索が自由自在に(2015年3月7日 更新)

WordPress 3.7.0ではWP_Date_Queryクラスが追加され、WP_Queryクラス(もちろん query_posts関数でも)で利用できるようになった。このWP_Date_Queryにより、○年○月○日以前や以降の投稿情報を取得したり、○年○月○日から○年○月○日の範囲の投稿情報を取得したりといったことが、容易に行えるようになった。

プラグインのヘッダー情報を国際化対応しよう(2018年5月27日 更新)

バージョン4.8がリリースされてひと段落。あらためてプラグイン一覧ページを見てみると「Akismet」が「Akismet Anti-Spam (アンチスパム)」と表示されていた。説明文だけじゃなくプラグイン名も国際化対応できたのね。