WEB制作のための情報サイト / unazuki Library

add_shortcode()

基本構文と使い方(引数・実行結果)

基本構文

任意のショートコードを作成して追加します。

add_shortcode($tag,$callback);

引数

引数必須/任意引数に指定するもの
第1引数
$tag
必須ショートコードのタグ名(文字列
第2引数
$callback
必須ショートコードが呼び出されたときに実行するコールバック関数の名前(文字列
このコールバック関数には3つのパラメーターを渡すことができます。
$atts ショートコード実行時に指定された「属性名と値」が連想配列で渡します
$content ショートコードのコンテンツが渡します(ショートコードの開始タグと終了タグで囲まれている値)
$shortcode_tag ショートコードのタグ名自体を渡します

なお、コールバック関数は実行結果を文字列として返す必要があります。(コールバック関数の中でechoしません)

実行結果

ショートコードを追加します。

追加したショートコードはブロックエディタから埋め込むことができます。テンプレートファイルの中で実行したい場合は、do_shortcode()を使います。

例1.定型テキストを返す簡単なショートコードの例

下記の例では、定型テキストのみを返すショートコードの例です。

function my_text_shortcode() {
	return '<div class="my-text">ショートコードで出力するテキスト</div>';
}
add_shortcode('mytext', 'my_text_shortcode');

上記で作成したショートコードを実行します。

[mytext]

結果:ショートコードで出力するテキスト

例2.属性を指定できるショートコードの例

下記の例ではショートコード実行時にurlとtext属性を指定できます。

function my_button_shortcode( $atts ) {
	$atts = shortcode_atts(
		[
			'url'  => '#', // 初期値
			'text' => '詳しく見る', // 初期値
		],
  	$atts, // ショートコードで渡された属性の配列(なければ初期値が使われる)
		'button'
	);
	return '<a href="' . esc_url( $atts['url'] ) . '" class="button">'
		. esc_html( $atts['text'] )
		. '</a>';
}

add_shortcode( 'button', 'my_button_shortcode' );

上記で作成したショートコードを実行します。下記ではurlとtext属性を指定しています。

[button url="https://example.com" text="公式サイトへ"]

結果は以下です。

<a href="https://example.com" class="button">公式サイトへ</a>

例3.「例2」のテキストを第2引数$contentを使って囲みコンテンツで出力する

function my_button_shortcode( $atts, $content = '' ) {
	$atts = shortcode_atts(
		[
			'url' => '#', // 初期値
		],
		$atts, // ショートコードで渡された属性の配列(なければ初期値が使われる)
		'button'
	);

	return '<a href="' . esc_url( $atts['url'] ) . '" class="button">'
		. esc_html( $content )
		. '</a>';
}

add_shortcode( 'button', 'my_button_shortcode' );

上記で作成したショートコードを実行します。

[button url="https://example.com"]公式サイトへ[/button]

結果は以下です。

<a href="https://example.com" class="button">公式サイトへ</a>

学習者向け補足情報

【引数とは】
テンプレートタグ(=関数)を実行する際に、引数を渡すことができるテンプレートタグがあります。引数は、関数の中で使われるので、渡す引数の値によって実行結果が変わってきます。何を処理したいのか、どのようなデータを取得したいのかによって渡す引数が変わります。

【引数について】

  • 指定できる引数の数はテンプレートタグによって異なります。(引数なしもあり)
  • 引数ごとに必須 / 任意が決まっています。(必須は必ず指定、任意は指定しなければ初期値)
  • 引数名(例:$post)は仕様の便宜上の名前と考えてください。(この名前自体はテンプレートタグ実行に関係しません。各引数に何を指定するのかを理解していればOKです。)

※当サイトでは初期値とデフォルト値の言葉の定義を区別せず、原則統一して初期値を採用しています。

関連するテンプレートタグ

テンプレートタグ 説明
body_class() body要素に関するclass名を表示する。
do_shortcode() ショートコードが実行された文字列を返す。
wp_body_open() アクションフックwp_body_openに登録されている関数を実行する。
wp_footer() アクションフックwp_footerに登録されている関数を実行する。
wp_head() アクションフックwp_headに登録されている関数を実行する。
get_previous_post() 現在の投稿の前の投稿情報を取得する。
get_next_post() 現在の投稿の次の投稿情報を取得する。
previous_posts_link() アーカイブページにおいて次のページリンクを表示する。
next_posts_link() アーカイブページにおいて次のページリンクを表示する。
get_next_posts_link() アーカイブページにおいて次のページリンクのHTMLを取得する。
get_previous_posts_link() アーカイブページにおいて前のページリンクのHTMLを取得する。
get_template_part() テンプレートファイルにテンプレートパーツを呼び出して実行します。