在短码中检索传递给单个属性的多个值

时间:2017-06-09 作者:Yuri Rodrigues

如何检索值​​是否仅使用一个参数传递到短代码?

示例:

[related type="2,3,4,5,6"]
有可能做到吗?

2 个回复
最合适的回答,由SO网友:Dave Romsey 整理而成

下面的解决方案将解析传递给短代码的逗号分隔值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;
}

Example 1:

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

Output:

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

Example 2:

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

Output:

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

SO网友:JItendra Rana

您可以在短代码中传递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

}

结束

相关推荐

在更新站点信息时更新MultiSite中的Network/Site-info.php上的自定义字段的操作挂钩

我当前正在使用代码将自定义字段添加到site-info.php &;site-new.php 在网络管理中,要向数据库添加自定义选项,当我创建新的子网站时,这会起作用,它会在数据库中设置并检索输入值中的值。但是当我尝试更新此自定义选项的值时site-info, 这甚至没有到达函数,很可能是因为我使用了(错误的)钩子wpmu_new_blog, 因为我正在更新,我尝试使用wpmu_blog_updated, wpmu_edit_blog, wpmu_update_blog, 但我就是不能让它工作。任何