Shortcode API使用不同的属性更改返回值

时间:2014-10-31 00:19:39

标签: php wordpress

我有一个短代码,我想在将某个属性添加到短代码后传递一个不同的类。你是怎样做的?或者最好的方法是什么?

简码:

function one_half_columns($atts, $content = null){
    $type = shortcode_atts( array(
        'default' => 'col-md-6',
        'push' => 'col-xs-6'
    ), $atts );

    return '<div class="' . $type['push'] . '">' . do_shortcode($content) . '</div>';;
}
add_shortcode('one_half', 'one_half_columns');

当wordpress用户输入[one_half type="push"]时,我希望它使用数组pushcol-xs-6的值。

1 个答案:

答案 0 :(得分:1)

你的例子有几个问题 - 你传递的是#34;类型&#34;在你的短代码中,然后期待&#34;默认&#34;和&#34;推&#34;在您的短代码中。您要执行的操作是将shortcode_atts()的结果分配给$atts,然后在if上使用switch语句或$atts['type']个案;

function one_half_columns($atts, $content = null){
    // populate $atts with defaults
    $atts = shortcode_atts( array(
        'type' => 'default'
    ), $atts );

    // check the value of $atts['type'] to set $cssClass
    switch( $atts['type'] ){
        case 'push':
            $cssClass = 'col-xs-6';
            break;
        default:
            $cssClass = 'col-md-6';
            break;
    }

    return '<div class="' . $cssClass . '">' . do_shortcode($content) . '</div>';
}
add_shortcode( 'one_half', 'one_half_columns' );

现在打电话的时候:

[one_half type="push"]my content[/one_half]

你应该得到输出:

<div class="col-xs-6">my content</div>