Recuperar múltiples valores pasados a un solo atributo en un código corto

2

¿Cómo puedo recuperar los valores pasados al código abreviado usando solo un parámetro?

Ejemplo:

[related type="2,3,4,5,6"]

¿Es posible hacer eso?

    
pregunta Yuri Rodrigues 09.06.2017 - 19:37

2 respuestas

4

La solución a continuación analizará los valores separados por comas pasados al parámetro type del código corto. También eliminaremos cualquier espacio en blanco que rodea los valores, lo que es una mejora de la usabilidad (consulte el ejemplo 2 después del código a continuación).

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;
}

Ejemplo 1:

[related type="2,3,4,5,6"]

Output:

Array
(
    [0] => 2
    [1] => 3
    [2] => 4
    [3] => 5
    [4] => 6
)

Ejemplo 2:

[related type="8, 6, 7,5,30, 9"]

Output:

Array
(
    [0] => 8
    [1] => 6
    [2] => 7
    [3] => 5
    [4] => 30
    [5] => 9
)
    
respondido por el Dave Romsey 09.06.2017 - 20:23
1

Puede pasar un objeto JSON en un código corto:

[related values='{"a":"foo","b":"bar"}']

Entonces puedes recuperar los atributos pasados usando json_decode

public static function myshortcode( $atts, $content = null ) {
    extract( shortcode_atts( array(
        "values" = "",
    ), $atts ) );

    $values = json_decode( $values, true );

    // Your Shortcode Functionality here

}
    
respondido por el JItendra Rana 09.06.2017 - 19:46

Lea otras preguntas en las etiquetas