Comment puis-je récupérer les valeurs transmises au shortcode en utilisant un seul paramètre?
Exemple:
[related type="2,3,4,5,6"]
Est-il possible de faire ça?
La solution ci-dessous analysera les valeurs séparées par des virgules transmises au paramètre type
du shortcode. Nous allons également supprimer les espaces entourant les valeurs, ce qui constitue une amélioration de la convivialité (voir l'exemple 2 après le code ci-dessous).
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;
}
Exemple 1:
[related type="2,3,4,5,6"]
Sortie:
Array
(
[0] => 2
[1] => 3
[2] => 4
[3] => 5
[4] => 6
)
Exemple 2:
[related type="8, 6, 7,5,30, 9"]
Sortie:
Array
(
[0] => 8
[1] => 6
[2] => 7
[3] => 5
[4] => 30
[5] => 9
)
Vous pouvez transmettre un objet JSON dans un code court:
[related values='{"a":"foo","b":"bar"}']
Ensuite, vous pouvez récupérer les attributs passés en utilisant json_decode
public static function myshortcode( $atts, $content = null ) {
extract( shortcode_atts( array(
"values" = "",
), $atts ) );
$values = json_decode( $values, true );
// Your Shortcode Functionality here
}