スポンサーリンク

wp_parse_argsを利用する

プラグインなどを作成している人なんかには既知の事だと思いますが、
関数を作成する際にはwp_parse_argsを利用すると便利です。
もし知らない人は是非利用してみてください。

wp_parse_argsは
wordpress系の関数によくある「&」区切りで引数を作成するときに使用されています。

例えば引数を渡してリンクタグを作成する関数を作成するとして

function MakeLinkUrl( $url, $title, $before, $after ) {
	$res = esc_html($before);
	$res .= '<a href="'.esc_url($url).'" title="'.esc_attr($title).'">'.esc_html($title).'</a>';
	$res .= esc_html($after);
	return $res;
}

という関数を作成したとして、関数を呼ぶときに

echo MakeLinkUrl( 'http://www.yahoo.cp.jp', 'やほー', '<li>', '</li>' );

(※関数の動き、中身は適当です)

というのをwp_parse_argsを使用して作成する場合

function MakeLinkUrl( $args ) {
	$defaults = array(
		'url' => '',
		'title' => 'none',
		'before' => '<li>',
		'after' => '</li>' );
	$r = wp_parse_args($args, $defaults );
	extract( $r, EXTR_SKIP );
	
	$res = esc_html($before);
	$res .= '<a href="'.esc_url($url).'" title="'.esc_attr($title).'">'.esc_html($title).'</a>';
	$res .= esc_html($after);
	return $res;
}

となり、関数を呼ぶ場合は

echo MakeLinkUrl( 'url=http://www.yahoo.cp.jp&title=やほー&before=<li>&after=</li>' );

となります。

簡単に説明すると関数の
2行目は初期値を設定しています。
3行目のwp_parse_argsで「&」で区切って連想配列が作成されます。
4行目のextractで、連想配列を変数化しています。

一見、関数内の記述が逆に増えたと思われるかもしれませんが、
こうすることで呼ぶ側が関数の順番を気にする必要もありませんし、
引数増やすのが楽になりますので拡張しやすくなります。

2013年01月26日
リニューアルに伴い文章校正

[`evernote` not found]