1つのパラメータだけを使用してショートコードに渡された値を取得する方法を教えてください。
例:
[related type="2,3,4,5,6"]
それは可能ですか?
以下の解決策は、ショートコードのtype
パラメータに渡されたカンマ区切りの値を解析します。また、値を囲む空白を削除することで、ユーザビリティが向上します(以下のコードの後の例2を参照)。
add_shortcode( 'related', 'wpse_related' );
function wpse_related( $atts, $content = '' ) {
// User provided values are stored in $atts.
// Default values are passed to shortcode_atts() below.
// Merged values are stored in the $a array.
$a = shortcode_atts( [
'type' => false,
], $atts );
$output = '';
if ( $a['type'] ) {
// Parse type into an array. Whitespace will be stripped.
$a['type'] = array_map( 'trim', str_getcsv( $a['type'], ',' ) );
}
// Debugging: Display the type parameter as a formatted array.
$output .= '<pre>' . print_r( $a['type'], true ) . '</pre>';
return $output;
}
例1:
[related type="2,3,4,5,6"]
出力:
Array
(
[0] => 2
[1] => 3
[2] => 4
[3] => 5
[4] => 6
)
例2:
[related type="8, 6, 7,5,30, 9"]
出力:
Array
(
[0] => 8
[1] => 6
[2] => 7
[3] => 5
[4] => 30
[5] => 9
)
JSONオブジェクトを短いコードで渡すことができます。
[related values='{"a":"foo","b":"bar"}']
それからあなたはjson_decode
を使って渡された属性を検索することができます
public static function myshortcode( $atts, $content = null ) {
extract( shortcode_atts( array(
"values" = "",
), $atts ) );
$values = json_decode( $values, true );
// Your Shortcode Functionality here
}