Personal WP Customization Notes (PWCN)

WordPressで実際に行ったカスタマイズの記録、発生した問題への対処時のメモ、ブロックテーマのカスタマイズなど

ショートコードパラメーターに複数の値を指定した場合のコードの書き方

ショートコードを使って何かを出力する時に使うパラメーター、パラメーターの値が単独なら問題ないんだけど、複数の指定値を「,」で区切って指定した場合にうまく抽出できない問題を解消するためのメモコード例です。

具体例としては、何かの一覧を表示するショートコードで、複数のカテゴリーを指定して、いずれかを含む..なんて条件で抽出したい場合に役立つものです。

結論としては特に複雑な処理をする必要はなく、いつも過去のコードを見て、たったそれだけ?と思うことが多いので、自身の備忘録を兼ねて紹介しておきます。

以下がサンプルとなるコードです。比べ複数指定するための記述を追加していますので、通常のパラメーターを加えたコードと比べてみてください。

function sample_post_list_sc_with_image($atts){

$atts = shortcode_atts(
	array(
		'type' => ''
	),$atts);

$posttype = $atts['type'];
	if(isset($posttype)){
		$type = $posttype;
	}else{
		$type = 'post';
	}

/***** 一覧の出力 *****/
/* 抽出条件を定義(パラメーターの値を反映) */
$args = array(
    'post_type' => explode( ',', $type ), 
    'posts_per_page' => $num,
	'order' => 'DESC',
	'orderby' => 'modified',
    'no_found_rows' => true,  //ページャーを使う時はfalseに。
 );
..........
}
add_shortcode('test-sc','sample_post_list_sc_with_image');

複雑なことしなくても、以下のようにすれば事足ります。

explode( 'パラメーター上で分割している文字列', パラメーターに入力した値 )

上記のコードの場合は、パラメーターで分割している文字に「,」を指定して、青字部分で、「type」パラメーターとして指定した値を「$type」という変数にしているので、以下のようにすればよいということです。

explode( ',', $type )

参考:explode

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

※リンクやURLの挿入されているコメントは無視します