3, 'colour' => 'red', 'el_class' => '', 'css' => '', ), $atts ) ); // Prepare base element class $el_class .= " {$this->settings['base']} {$this->settings['class']}"; // Prepare design class $css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, trim( $el_class ) . vc_shortcode_custom_css_class( $css, ' ' ), $this->settings['base'], $atts ); // Prepare output HTML $out = '
'; $out .= sprintf( '

Number is %1$s, colour is %2$s!

', (int) $number, $colour ); $out .= wpb_js_remove_wpautop( $content, true ); $out .= '
' . $this->endBlockComment( $this->settings['base'] ); // Return prepared HTML return $out; } // END function content( $atts, $content = null ) { } // END class WPBakeryShortCode_my_shortcode extends WPBakeryShortCode { } // END if ( ! class_exists( 'WPBakeryShortCode_my_shortcode' ) ) { // Now map VisualComposer element for custom shortcode my_shortcode if ( function_exists( 'vc_map' ) ) { vc_map( array( 'name' => 'My Shortcode', 'base' => 'my_shortcode', // Provides $this->settings['base'] for shortcode method 'class' => 'custom_shortcode', 'category' => __( 'Content', 'js_composer' ), 'description' => __( 'Description for My Shortcode', 'visualcomposer-example' ), 'params' => array( // Number field array( 'type' => 'textfield', 'admin_label' => true, 'class' => 'number', 'heading' => __( 'Number', 'visualcomposer-example' ), 'param_name' => 'number', 'std' => 3, 'description' => __( 'Description for number param.', 'visualcomposer-example' ), ), // Colours dropdown array( 'type' => 'dropdown', 'admin_label' => true, 'class' => '', 'heading' => __( 'Colour', 'visualcomposer-example' ), 'param_name' => 'colour', 'std' => 'red', 'value' => array( 'White' => 'white', 'Yellow' => 'yellow', 'Gold' => 'gold', 'Orange' => 'orange', 'Pink' => 'pink', 'Red' => 'red', 'Magenta' => 'magenta', 'Lime' => 'lime', 'Green' => 'green', 'Cyan' => 'cyan', 'Blue' => 'blue', 'Black' => 'black', ), 'description' => __( 'Description for colour param.', 'visualcomposer-example' ), ), // Shortcode content array( 'type' => 'textarea_html', 'holder' => 'div', 'class' => '', 'heading' => __( 'Text', 'js_composer' ), 'param_name' => 'content', 'value' => __( 'Hello world', 'js_composer' ), 'description' => __( 'Enter your content.', 'js_composer' ), ), // Custom class field array( 'type' => 'textfield', 'heading' => __( 'Custom Class', 'js_composer' ), 'param_name' => 'el_class', 'std' => '', 'description' => __( 'Description for el_class param.', 'visualcomposer-example' ), ), // Design options tab array( 'type' => 'css_editor', 'heading' => __( 'Css', 'js_composer' ), 'param_name' => 'css', 'group' => __( 'Design options', 'js_composer' ), ), ), )); }