Vorlage für neues Visual Composer Element mit Shortcode
4 min read
<?php if ( ! defined( 'ABSPATH' ) ) { die( '-1' ); } function budi_default($atts, $content = null){ // Attribute einlesen, auf default setzen falls nicht angegeben $atts = shortcode_atts([ 'heading' => '', 'color' => '#ff00ff', 'button' => '', 'layout' => 'design-1', 'css' => '', 'extra_css' => '', ], $atts); // Genutzt CSS Datei nur einbauen, wenn Element auch wirklich vorhanden ist. Bitte statt wp_enqueue_style verwenden // Unbedingt eigenen namen vergeben!!!!! // budi_add_style( 'budi-tiles', this_dir_url(__FILE__) . 'style.css' ); // budi_add_script( 'budi-tiles-script', this_dir_url(__FILE__) . 'script.js' ); // CSS Klassen für Abstände, Rahmen, Padding, Margin aus WPBakery übernehmen $css_class = sc_merge_css( $atts['css'], $atts['extra_css'] ); ob_start(); ?> <section class="<?php echo $css_class; ?>"> <h2 class="text-center" style="color: <?php echo $atts['color']; ?>"><?php echo $atts["heading"]; ?></h2> <div class="content"> <?php echo nl2br( $content ); ?> </div> <?php if( $atts["button"] ) { ?> <?php $link = vc_build_link( $atts["button"] ); ?> <a href="<?php echo $link['url']; ?>" class="button white" target="<?php echo $link['target']; ?>"><?php echo $link['title']; ?></a> <?php } ?> </section> <?php // HTML Output in Variable packen und zurück geben $output = ob_get_contents(); ob_end_clean(); return $output; } // Shortcode hinzufügen add_shortcode('shortcodebase', 'budi_default'); // [shortcode-name heading="Titel" text="lorem ipsum dolor sit amet" ...] /* WPBakery den Shortcode beibringen und Datenfelder beschreiben für das Konfig-Feld REFERENZ: https://kb.wpbakery.com/docs/inner-api/vc_map/ */ add_action( 'vc_before_init', function(){ if( !function_exists('vc_map') ){ return; } vc_map( array( "name" => "Shortcode Vorlage", // Titel in WPBakery "description" => "Beschreibung des Shortcodes", // Beschreibung des Shortcodes in der Elemente-Übersicht "base" => "shortcodebase", // Shortcode Base aus Zeile 57 "class" => "", "icon" => this_dir_url(__FILE__) . 'bundesweit.digital.png', // URL zum Element-Icon "category" => "bundesweit.digital", // Kategorie Tab in die das Element eingeordnet wird, Standardmäßig bundesweit.digital "content_element" => true, "holder" => "div", "params" => array( array( "type" => "description", "param_name" => "_not_used", "heading" => "Shortcode Vorlage", // Titel des Shortcodes beim "Einstellen/Konfigurieren" "image" => WIKI_BASE_URL . '/wp-content/uploads/2021/07/vorlage.png', // Optional URL zum Bild (WIKI_BASE_URL Konstante zeigt auf Wiki, also Link nur ab /wp-content/... notwendig) "read_more_link" => WIKI_BASE_URL . '/docs/%%SLUG%%/', // URL zum Wiki Eintrag "description" => "Langer Beschreibungstext", // Langer Beschreibungstext zum Element beim "Einstellen/Konfigurieren" ), // Optionsfelder / Datenfelder die benötigt werden array( "type" => "textfield", // [textfield, checkbox, textarea_html (wysiwig), attach_image, dropdown, textarea, loop] "class" => "", "heading" => "Überschrift", "param_name" => "heading", // Parameter Name soll übereinstimmen mit ab Zeile 15 definierten Feldern "value" => "Überschrift", "description" => "", "admin_label" => true // Admin Label bedeutet, dass diese Einstellung auf der "Seite Bearbeiten" Ansicht beim Element angezeigt wird ), array( "type" => "autocomplete", // [textfield, checkbox, textarea_html (wysiwig), attach_image, attach_images, dropdown, textarea, loop] "class" => "", "heading" => "Mitarbeiter", "param_name" => 'param_mitarbeiter', // Parameter Name soll übereinstimmen mit ab Zeile 15 definierten Feldern 'settings' => array( 'multiple' => true, // Können mehrere Mitarbeiter ausgewählt werden? 'sortable' => true, // Per Drag and Drop sortierbar 'display_inline' => true, // 'values' => get_posts_for_autocomplete('mitarbeiter'), ), "description" => "", "admin_label" => false, // Admin Label bedeutet, dass diese Einstellung auf der "Seite Bearbeiten" Ansicht beim Element angezeigt wird ), /* array( "type" => "colorpicker", // [textfield, checkbox, textarea_html (wysiwig), attach_image, dropdown, textarea, loop] "class" => "", "heading" => "Überschrift Farbe", "param_name" => "color", // Parameter Name soll übereinstimmen mit ab Zeile 12 definierten Feldern "value" => "", "description" => "", "admin_label" => false ), array( "type" => "textarea_html", // Standard WP HTML Editor, nur einer sollte pro Shortcode verwendet werden "class" => "", "heading" => "Text", "param_name" => "content", // Beim type textarea_html sollte content als param_name gewählt werden, dies wird in den Shortcode als zweiter Paramter übergeben "value" => "", "description" => "", "admin_label" => true ), array( "type" => "vc_link", // vc_link ist der standard WP Link-Picker der auch bei ACF verwendet wurde. "class" => "", "heading" => "Optionaler Button", "param_name" => "button", "value" => "", "description" => "", "admin_label" => false ),*/ array( "type" => "textfield", "class" => "", "heading" => "Extra CSS Class", "param_name" => "extra_css", "value" => "", "description" => "", ), array( 'type' => 'css_editor', 'heading' => 'CSS', 'param_name' => 'css', 'group' => 'Design Options', ), ), ) ); } ); ?>
Powered by BetterDocs