{"id":25098,"date":"2021-05-31T11:57:00","date_gmt":"2021-05-31T08:57:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25098"},"modified":"2021-10-18T02:35:27","modified_gmt":"2021-10-17T23:35:27","slug":"so-erstellen-sie-ein-benutzerdefiniertes-elementor-widget","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/de\/so-erstellen-sie-ein-benutzerdefiniertes-elementor-widget\/","title":{"rendered":"So erstellen Sie ein benutzerdefiniertes Elementor-Widget"},"content":{"rendered":"<p><a href=\"https:\/\/wordpress.org\/plugins\/elementor\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Elementor<\/a> ist einer der beliebtesten Seitenersteller f\u00fcr WordPress. Das Erstellen einer WordPress-Website mit Elementor ist einfach und Sie k\u00f6nnen mit diesem beliebten Plugin viel Zeit sparen. Elementor bietet Widgets zum Erstellen verschiedener Abschnitte auf Ihren Seiten. Sie m\u00fcssen nur ein Widget aufnehmen, es konfigurieren und die generierten Elemente werden im Frontend angezeigt.<\/p>\n<p>Es kann vorkommen, dass Sie keine Widgets Ihrer Wahl erhalten. M\u00f6glicherweise suchen Sie nach einer anderen Funktionalit\u00e4t, die \u00fcber die Standard-Widgets von Elementor nicht m\u00f6glich ist. In solchen Szenarien ben\u00f6tigen Sie ein benutzerdefiniertes Widget, das Ihre Anforderungen erf\u00fcllt. Gl\u00fccklicherweise ist Elementor einfach zu erweitern und Sie k\u00f6nnen jede gew\u00fcnschte Funktionalit\u00e4t erstellen, indem Sie eine Elementor-Erweiterung erstellen. Elementor-Erweiterungen sind die gleichen wie normale WordPress-Plugins, sie erweitern die Grundfunktionalit\u00e4t.<\/p>\n<p>In diesem Artikel zeige ich Ihnen, wie Sie ein benutzerdefiniertes Elementor-Widget erstellen, das nichts anderes als eine Elementor-Erweiterung ist.<\/p>\n<p>Um es praktisch zu sehen, nehme ich ein Beispiel von <a href=\"https:\/\/getbootstrap.com\/docs\/4.1\/components\/carousel\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Bootstrap Carousel<\/a>. Wir werden ein WordPress-Plugin f\u00fcr das benutzerdefinierte Elementor-Widget erstellen. Dieses Widget gibt Ihnen die M\u00f6glichkeit, Bootstrap-Karussell auf Ihren Seiten hinzuzuf\u00fcgen.<\/p>\n<p>Der Zweck dieses Tutorials besteht darin, Sie mit der Entwicklung von Elementor-Widgets vertraut zu machen. Wir werden ein Elementor-Widget f\u00fcr Bootstrap Carousel entwickeln. Mit dem gleichen Ansatz k\u00f6nnen Sie Ihre eigenen Widgets erstellen.<\/p>\n<h3>Erstellen einer Erweiterung f\u00fcr Elementor<\/h3>\n<p>Um loszulegen, m\u00fcssen Sie das Elementor-Plugin installiert und aktiviert haben. Erstellen Sie danach einen Ordner &#8218;artisansweb-elementor-add-on&#8216; im Verzeichnis &#8218;wp-content\/plugins&#8216;. Hier zum Ordnernamen und im n\u00e4chsten Teil des Codes verwende ich den Begriff &#8218;artisansweb&#8216;, um eindeutige Referenzen zu behalten. Sie k\u00f6nnen diesen Begriff beliebig \u00e4ndern.<\/p>\n<p>Erstellen Sie in unserem Plugin eine Datei <code>artisansweb-elementor-add-on.php<\/code>. Diese Datei enth\u00e4lt einen Code, der eine Erweiterung von Elementor erstellt.<\/p>\n<p>Sie erhalten die Boilerplate zum Erstellen der Erweiterung in der Elementor- <a href=\"https:\/\/developers.elementor.com\/creating-an-extension-for-elementor\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Dokumentation<\/a>.<\/p>\n<p>Nachdem ich die Dokumentation befolgt habe, habe ich einen folgenden Code geschrieben, den Sie in die <code>artisansweb-elementor-add-on.php<\/code>Datei einf\u00fcgen sollten .<\/p>\n<pre><code>&lt;?php\n\/*\nPlugin Name: Elementor Widget - Bootstrap Carousel\nPlugin URI: https:\/\/artisansweb.net\nDescription: Creates a Bootstrap Carousel.\nAuthor: Artisans Web\nVersion: 1.0\nAuthor URI: https:\/\/artisansweb.net\n*\/\n\u00a0\nif (! defined( 'ABSPATH')) {\n\u00a0\u00a0\u00a0\u00a0exit; \/\/ Exit if accessed directly.\n}\n\u00a0\nfinal class Artisansweb_Elementor_Extension {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0const VERSION = '1.0';\n\u00a0\u00a0\u00a0\u00a0const MINIMUM_ELEMENTOR_VERSION = '2.0.0';\n\u00a0\u00a0\u00a0\u00a0const MINIMUM_PHP_VERSION = '7.0';\n\u00a0\n\u00a0\u00a0\u00a0\u00a0private static $_instance = null;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public static function instance() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (is_null( self::$_instance)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0self::$_instance = new self();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return self::$_instance;\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function __construct() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0add_action( 'init', [ $this, 'i18n' ] );\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0add_action( 'plugins_loaded', [ $this, 'init' ] );\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_scripts' ], 11 );\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function init() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Check if Elementor installed and activated\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (! did_action( 'elementor\/loaded')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0add_action( 'admin_notices', [ $this, 'admin_notice_missing_main_plugin' ] );\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Check for required Elementor version\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (! version_compare( ELEMENTOR_VERSION, self::MINIMUM_ELEMENTOR_VERSION, '&gt;=')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0add_action( 'admin_notices', [ $this, 'admin_notice_minimum_elementor_version' ] );\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Check for required PHP version\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (version_compare( PHP_VERSION, self::MINIMUM_PHP_VERSION, '&lt;')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0add_action( 'admin_notices', [ $this, 'admin_notice_minimum_php_version' ] );\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Add Plugin actions\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0add_action( 'elementor\/widgets\/widgets_registered', [ $this, 'init_widgets' ] );\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function i18n() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0load_plugin_textdomain( 'artisansweb-elementor-add-on' );\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function admin_notice_missing_main_plugin() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (isset( $_GET['activate'])) unset( $_GET['activate'] );\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$message = sprintf(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/* translators: 1: Plugin name 2: Elementor *\/\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0esc_html__( '\"%1$s\" requires \"%2$s\" to be installed and activated.', 'artisansweb-elementor-add-on' ),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'&lt;strong&gt;'. esc_html__( 'Elementor', 'artisansweb-elementor-add-on' ). '&lt;\/strong&gt;'\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0printf( '&lt;div class=\"notice notice-warning is-dismissible\"&gt;&lt;p&gt;%1$s&lt;\/p&gt;&lt;\/div&gt;', $message );\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function admin_notice_minimum_elementor_version() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (isset( $_GET['activate'])) unset( $_GET['activate'] );\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$message = sprintf(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/* translators: 1: Plugin name 2: Elementor 3: Required Elementor version *\/\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0esc_html__( '\"%1$s\" requires \"%2$s\" version %3$s or greater.', 'artisansweb-elementor-add-on' ),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'&lt;strong&gt;'. esc_html__( 'Elementor', 'artisansweb-elementor-add-on' ). '&lt;\/strong&gt;',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0self::MINIMUM_ELEMENTOR_VERSION\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0printf( '&lt;div class=\"notice notice-warning is-dismissible\"&gt;&lt;p&gt;%1$s&lt;\/p&gt;&lt;\/div&gt;', $message );\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function admin_notice_minimum_php_version() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (isset( $_GET['activate'])) unset( $_GET['activate'] );\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$message = sprintf(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/* translators: 1: Plugin name 2: PHP 3: Required PHP version *\/\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0esc_html__( '\"%1$s\" requires \"%2$s\" version %3$s or greater.', 'artisansweb-elementor-add-on' ),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'&lt;strong&gt;'. esc_html__( 'PHP 7.0', 'artisansweb-elementor-add-on' ). '&lt;\/strong&gt;',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0self::MINIMUM_PHP_VERSION\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0printf( '&lt;div class=\"notice notice-warning is-dismissible\"&gt;&lt;p&gt;%1$s&lt;\/p&gt;&lt;\/div&gt;', $message );\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function init_widgets() {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Include Widget files\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0require_once( __DIR__. '\/widgets\/artisansweb-testimonial-widget.php' );\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Register widget\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ElementorPlugin::instance()-&gt;widgets_manager-&gt;register_widget_type( new Artisansweb_Testmonial_Widget() );\n\u00a0\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function enqueue_scripts() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0wp_register_style( \"bootstrap-css\", \"https:\/\/stackpath.bootstrapcdn.com\/bootstrap\/4.1.3\/css\/bootstrap.min.css\", array(), false, \"all\" );\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0wp_enqueue_style( \"bootstrap-css\" );\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0wp_register_script(\"bootstrap-js\", \"https:\/\/stackpath.bootstrapcdn.com\/bootstrap\/4.1.3\/js\/bootstrap.min.js\", array(), false, true);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0wp_enqueue_script(\"bootstrap-js\");\n\u00a0\u00a0\u00a0\u00a0}\n}\nArtisansweb_Elementor_Extension::instance();<\/code><\/pre>\n<p>In die obige Code-Inside- <code>init_widgets()<\/code>Methode habe ich eine <code>artisansweb-testimonial-widget.php<\/code>aus dem Verzeichnis &#8218;widgets&#8216; eingef\u00fcgt. Das hei\u00dft, Sie m\u00fcssen einen &#8218;Widgets&#8216;-Ordner erstellen und darin eine <code>artisansweb-testimonial-widget.php<\/code>Datei erstellen.<\/p>\n<p>Ich habe die JS- und CSS-Dateien von Bootstrap aus der <code>enqueue_scripts<\/code>Funktion hinzugef\u00fcgt. Beachten Sie, dass ich einen CDN-Pfad dieser Dateien direkt angegeben habe. Der Benutzer kann diese Dateien im Plugin-Ordner behalten und sie einschlie\u00dfen, indem er den obigen CDN-Pfad ersetzt.<\/p>\n<p>Zu diesem Zeitpunkt sollten Sie den Plugin-Namen auf der Seite <strong>Plugins-&gt;Installierte Plugins sehen<\/strong>.<\/p>\n<p>Aktivieren Sie das Plugin nicht. Wir m\u00fcssen mehr Code schreiben, damit es funktioniert.<\/p>\n<h3>Elementor-Widget-Struktur<\/h3>\n<p>Wir sind damit fertig, die erforderlichen Dateien f\u00fcr unser Widget hinzuzuf\u00fcgen. Der n\u00e4chste Teil ist das Erstellen eines tats\u00e4chlichen Elementor-Widgets. Die Elementor-Website hat eine <a href=\"https:\/\/developers.elementor.com\/creating-a-new-widget\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Widget-Struktur<\/a> bereitgestellt <a href=\"https:\/\/developers.elementor.com\/creating-a-new-widget\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">,<\/a> der wir folgen m\u00fcssen.<\/p>\n<p>F\u00fcgen Sie der <code>artisansweb-testimonial-widget.php<\/code>Datei die Grundstruktur wie folgt hinzu.<\/p>\n<pre><code>&lt;?php\nclass Artisansweb_Testmonial_Widget extends ElementorWidget_Base {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function get_name() {}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function get_title() {}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function get_icon() {}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function get_categories() {}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0protected function _register_controls() {}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0protected function render() {}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0protected function _content_template() {}\n\u00a0\n}<\/code><\/pre>\n<p>Alle in der obigen Klasse definierten Methoden haben ihre eigene Verantwortung. Sie m\u00fcssen Ihren Widget-Namen in der Methode hinzuf\u00fcgen <code>get_name()<\/code>, das Widget-Symbol wird hineingeklickt <code>get_icon()<\/code>, der Frontend-Teil wird von der <code>render()<\/code>Methode angezeigt und so weiter. Die Beschreibungen aller Methoden sind in deren <a href=\"https:\/\/developers.elementor.com\/creating-a-new-widget\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Dokumentation<\/a> verf\u00fcgbar .<\/p>\n<p><strong>Hinweis:<\/strong> Elementor erm\u00f6glicht die Verwendung von gro\u00dfartigen Symbolen f\u00fcr Schriftarten. Geben Sie einfach den Klassennamen als Zeichenfolge zur\u00fcck. Ich werde das Symbol &#8218;fa fa-sliders&#8216; f\u00fcr unser Widget hinzuf\u00fcgen.<\/p>\n<p>Lassen Sie uns den Code f\u00fcr alle Methoden mit Ausnahme der <code>render()<\/code>. Da wir eine Referenz aus dem Bootstrap-Karussell verwenden m\u00fcssen, werden wir den Code f\u00fcr die <code>render()<\/code>Funktion im sp\u00e4teren Teil des Tutorials hinzuf\u00fcgen .<\/p>\n<pre><code>&lt;?php\nclass Artisansweb_Testmonial_Widget extends ElementorWidget_Base {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function get_name() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return 'artisansweb-carousel';\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function get_title() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return __( 'Artisansweb Carousel', 'artisansweb-elementor-add-on' );\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function get_icon() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return 'fa fa-sliders';\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public function get_categories() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return [ 'general' ];\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0protected function _register_controls() {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;start_controls_section(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'content_section',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'label' =&gt; __( 'Content', 'artisansweb-elementor-add-on' ),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'tab' =&gt; ElementorControls_Manager::TAB_CONTENT,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$repeater = new ElementorRepeater();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$repeater-&gt;add_control(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'list_title', [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'label' =&gt; __( 'Title', 'artisansweb-elementor-add-on' ),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'type' =&gt; ElementorControls_Manager::TEXT,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'default' =&gt; __( 'List Title', 'artisansweb-elementor-add-on' ),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'label_block' =&gt; true,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$repeater-&gt;add_control(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'list_image',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'label' =&gt; __( 'Choose Image', 'artisansweb-elementor-add-on' ),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'type' =&gt; ElementorControls_Manager::MEDIA,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'default' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'url' =&gt; ElementorUtils::get_placeholder_image_src(),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;add_control(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'list',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'label' =&gt; __( 'Repeater List', 'artisansweb-elementor-add-on' ),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'type' =&gt; ElementorControls_Manager::REPEATER,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'fields' =&gt; $repeater-&gt;get_controls(),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'default' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'list_title' =&gt; __( 'Title #1', 'artisansweb-elementor-add-on' ),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'list_image' =&gt; __( 'Item image.', 'artisansweb-elementor-add-on' ),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'list_title' =&gt; __( 'Title #2', 'artisansweb-elementor-add-on' ),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'list_image' =&gt; __( 'Item image.', 'artisansweb-elementor-add-on' ),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'title_field' =&gt; '{{{ list_title }}}',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;end_controls_section();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0protected function render() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ generate the final HTML on the frontend using PHP\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Ich habe ein Elementor-Repeater-Steuerelement verwendet, mit dem Sie wiederholbare Feldbl\u00f6cke erstellen k\u00f6nnen. Wenn wir ein Karussell erstellen, enth\u00e4lt es mehrere Felder. Hier habe ich die Optionen zum Hinzuf\u00fcgen eines Bildes und einer Beschriftung mit einem Repeater-Steuerelement angegeben.<\/p>\n<p>Neben der Repeater-Steuerung habe ich auch die Text- und Mediensteuerung verwendet. <a href=\"https:\/\/developers.elementor.com\/register-widget-controls\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Klicken Sie hier<\/a>, um mehr \u00fcber die Elementor-Steuerelemente zu erfahren.<\/p>\n<p>Aktivieren Sie das Plugin und versuchen Sie, Ihre Seite mit Elementor zu bearbeiten. Suchen Sie nach &#8218;Artisansweb Carousel&#8216; und f\u00fcgen Sie dieses Widget zur Seite hinzu. Sie sehen die Optionen zum Hinzuf\u00fcgen von Bildunterschriften und Bildern, wie im Screenshot unten gezeigt.<\/p>\n<h3>Bootstrap-Karussell mit benutzerdefiniertem Elementor-Widget<\/h3>\n<p>Wir haben uns alle vorgenommen, ein Karussell mit dem Elementor-Widget zu erstellen. Wenn Sie sich die <a href=\"https:\/\/getbootstrap.com\/docs\/4.1\/components\/carousel\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Bootstrap-Karussell-<\/a> Dokumentation ansehen, haben sie den HTML-Code f\u00fcr Karussell bereitgestellt. Ich nehme ein Beispiel f\u00fcr ein Karussell mit Bildunterschriften. F\u00fcr diese Art von Karussell m\u00fcssen Sie den folgenden HTML-Code verwenden.<\/p>\n<pre><code>&lt;div id=\"carouselExampleIndicators\" class=\"carousel slide\" data-ride=\"carousel\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;ol class=\"carousel-indicators\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;li data-target=\"#carouselExampleIndicators\" data-slide-to=\"0\" class=\"active\"&gt;&lt;\/li&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;li data-target=\"#carouselExampleIndicators\" data-slide-to=\"1\"&gt;&lt;\/li&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/ol&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"carousel-inner\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"carousel-item active\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;img class=\"d-block w-100\" src=\"...\/800x400?auto=yes&amp;bg=777&amp;fg=555&amp;text=First slide\" alt=\"First slide\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;h3&gt;Caption here...&lt;\/h3&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"carousel-item\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;img class=\"d-block w-100\" src=\"...\/800x400?auto=yes&amp;bg=666&amp;fg=444&amp;text=Second slide\" alt=\"Second slide\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;h3&gt;Caption here...&lt;\/h3&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;a class=\"carousel-control-prev\" href=\"#carouselExampleIndicators\" role=\"button\" data-slide=\"prev\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"&gt;&lt;\/span&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;span class=\"sr-only\"&gt;Previous&lt;\/span&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/a&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;a class=\"carousel-control-next\" href=\"#carouselExampleIndicators\" role=\"button\" data-slide=\"next\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;span class=\"carousel-control-next-icon\" aria-hidden=\"true\"&gt;&lt;\/span&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;span class=\"sr-only\"&gt;Next&lt;\/span&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/a&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<p>Das obige ist statisches HTML. Wenn es um das Elementor-Widget geht, m\u00fcssen wir es dynamisch machen, indem wir die f\u00fcr Titel und Bild hinzugef\u00fcgten Werte verwenden.<\/p>\n<p>Unsere <code>render()<\/code>Methode hat also den folgenden Code.<\/p>\n<pre><code>&lt;?php\nprotected function render() {\n\u00a0\u00a0\u00a0\u00a0\/\/ generate the final HTML on the frontend using PHP\n\u00a0\u00a0\u00a0\u00a0$settings = $this-&gt;get_settings_for_display();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if ($settings['list']) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div id=\"carouselExampleIndicators\" class=\"carousel slide\" data-ride=\"carousel\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;ol class=\"carousel-indicators\"&gt;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php for($i=0; $i&lt;count($settings['list']); $i++) { ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;li data-target=\"#carouselExampleIndicators\" data-slide-to=\"0\" class=\"&lt;?php echo ($i==0)? 'active':''; ?&gt;\"&gt;&lt;\/li&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php } ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/ol&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"carousel-inner\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php $i = 0; ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php foreach (\u00a0 $settings['list'] as $item) { ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"carousel-item &lt;?php echo ($i==0)? 'active':''; ?&gt;\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;img class=\"d-block w-100\" src=\"&lt;?php echo $item['list_image']['url']; ?&gt;\" alt=\"&lt;?php echo $item['list_title']; ?&gt;\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"carousel-caption d-none d-md-block\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;h3&gt;&lt;?php echo $item['list_title']; ?&gt;&lt;\/h3&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php $i++; ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php } ?&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;a class=\"carousel-control-prev\" href=\"#carouselExampleIndicators\" role=\"button\" data-slide=\"prev\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"&gt;&lt;\/span&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;span class=\"sr-only\"&gt;Previous&lt;\/span&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/a&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;a class=\"carousel-control-next\" href=\"#carouselExampleIndicators\" role=\"button\" data-slide=\"next\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;span class=\"carousel-control-next-icon\" aria-hidden=\"true\"&gt;&lt;\/span&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;span class=\"sr-only\"&gt;Next&lt;\/span&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/a&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;?php\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Das ist es! F\u00fcgen Sie Ihre Bilder und Bildunterschriften hinzu und Sie sollten jetzt das Bootstrap-Karussell auf Ihrer Seite sehen.<\/p>\n<p>Es dreht sich alles um die Widget-Entwicklung in Elementor. Auf \u00e4hnliche Weise k\u00f6nnen Sie den Code anpassen, um verschiedene Elementor-Steuerelemente zu verwenden und die benutzerdefinierten Widgets gem\u00e4\u00df Ihren Anforderungen zu generieren.<\/p>\n<p>Ich hoffe, Sie verstehen, wie Sie ein benutzerdefiniertes Elementor-Widget erstellen. Bitte teilen Sie Ihre Gedanken und Vorschl\u00e4ge im Kommentarbereich unten mit.<\/p>\n<h4>Zum Thema passende Artikel<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/mailchimp-integration-mit-contact-form-7-plugin\/\" title=\"MailChimp-Integration mit Contact Form 7 Plugin\">MailChimp-Integration mit Contact Form 7 Plugin<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-fugen-sie-code-nach-dem-body-tag-in-wordpress-hinzu\/\" title=\"So f\u00fcgen Sie Code nach dem Body-Tag in WordPress hinzu\">So f\u00fcgen Sie Code nach dem Body-Tag in WordPress hinzu<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-senden-sie-wordpress-e-mails-uber-den-smtp-server\/\" title=\"So senden Sie WordPress-E-Mails \u00fcber den SMTP-Server\">So senden Sie WordPress-E-Mails \u00fcber den SMTP-Server<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Aufnahmequelle:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>M\u00f6chten Sie ein benutzerdefiniertes Elementor-Widget erstellen? Mit einem benutzerdefinierten Elementor-Widget k\u00f6nnen Sie Ihrer WordPress-Website beliebige Funktionen hinzuf\u00fcgen.<\/p>\n","protected":false},"author":1,"featured_media":20397,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[204],"tags":[845],"class_list":["post-25098","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-elementor-3","tag-affiai-de"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/25098","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/comments?post=25098"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/25098\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media\/20397"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media?parent=25098"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/categories?post=25098"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/tags?post=25098"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}