wake-up-neo.net

Abrufen mehrerer Werte, die in einem Shortcode an ein einzelnes Attribut übergeben wurden

Wie kann ich die an den Shortcode übergebenen Werte mit nur einem Parameter abrufen?

Beispiel:

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

Ist das möglich?

2
Yuri Rodrigues

Die folgende Lösung analysiert die durch Kommas getrennten Werte, die an den Parameter type des Shortcodes übergeben werden. Außerdem werden Leerzeichen um die Werte entfernt, was eine Verbesserung der Benutzerfreundlichkeit darstellt (siehe Beispiel 2 nach dem folgenden Code).

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

Beispiel 1:

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

Ausgabe:

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

Beispiel 2:

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

Ausgabe:

Array
(
    [0] => 8
    [1] => 6
    [2] => 7
    [3] => 5
    [4] => 30
    [5] => 9
)
4
Dave Romsey

Sie können ein JSON-Objekt in einem kurzen Code übergeben:

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

Anschließend können Sie übergebene Attribute mit json_decode abrufen.

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

    $values = json_decode( $values, true );

    // Your Shortcode Functionality here

}
1
JItendra Rana