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

公開日:2023(令和5)年12月29日/最終更新日:

WordPress Create Shortcodes | Personal WP Customization Notes (PWCN)

【景品表示法に基づく表記】ページ内のコンテンツには、商品プロモーションが含まれています

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

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

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

コードを使用する前に、ここをクリックして注意事項をご確認ください

本ページで掲載しているコードは、以下に了承した上で使用ください

  • コードは商用・非商用問わず自由に使っていただいて構いませんが、コード追加による不具合やトラブルが発生しても当方では一切責任を負いません
  • コードは有効化しているテーマのfunctions.php、style.cssなどへ追加することで機能します。それらのファイルへの変更を行うことに不安のある方は使用しないでください
  • コードは本ページの公開日時点で私の環境において動作したものです。WordPressバージョン他環境の違いによって動作しないことがあります
  • コードは、セキュリティ、コードの正確さなどにおいて完全なものではありません。中には紹介するコードを簡略化するために省略している部分があるものもありますので、ご自身でコードを十分に検証し、必要な部分の編集を行った上で使用するようにしてください
  • 掲載しているのは参考コードです。自身の環境に合わせるための編集はご自身で対応いただく必要があります(コメント欄等から質問いただいても基本回答は致しません)
  • 掲載しているコードの転載を禁じます(SNSで紹介いただいたり、本ページへのリンクを張っていただくことは大歓迎です)

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

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

, , ,
Lolipop ServerMoshimo Ad x-serverMoshimo Ad

WordPress Create Shortcodes | Personal WP Customization Notes (PWCN)
カスタムフィールドに保存した値を投稿本文内へショートコードで呼び出すコード