I have an shortcode that i would like it to pass an different class once a certain attribute is added to the shortcode. How do you do that? or what is the best way to do this?
Shortcode:
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');
Example when wordpress user enter [one_half type="push"]
i want it to use the value of push
in array col-xs-6
.
You're example has a couple of problems - you are passing an argument of "type" in your shortcode, but then expecting arguments of "default" and "push" in your shortcode. What you want to do is assign the results of shortcode_atts()
to $atts
and then use an if
statement or switch
case on $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' );
Now when you call:
[one_half type="push"]my content[/one_half]
You should get the output:
<div class="col-xs-6">my content</div>