Heim >CMS-Tutorial >WordDrücken Sie >Schneller Tipp: Verwenden Sie Shortcodes in Widgets in WordPress
In WordPress können Kurzcodes nur standardmäßig in Artikeln und Seiten verwendet werden und können nicht in Widgets verwendet werden. Diese Funktion kann jedoch mithilfe des widget_text
-Filter- und do_shortcode()
-Funktionen aktiviert werden, sodass das Text -Widget einen vorhandenen Shortcode analysieren kann.
Ermöglichen Sie Shortcodes im Text Widget
WordPress bietet standardmäßig mehrere Widgets. Mit dem Text -Widget können Sie dem Widget oder einem HTML -Code einen beliebigen Text hinzufügen. Dies bedeutet, dass Sie auch JavaScript -Code in diesem Widget verwenden können, daher ist er sehr leistungsfähig. Wenn Sie jedoch mehr Funktionen benötigen, z. B. ein PHP -Skript, das auf einige auf dem Server gespeicherte Daten zugreift, hilft Ihnen dieses Widget nicht standardmäßig.
Es ähnelt dem Artikel. Deshalb möchten wir wie im Artikel in der Lage sein, Shortcodes zu verwenden, um alles zu tun, was wir wollen. Dazu können wir den widget_text
-Filter verwenden. Dieser Filter wird verwendet, um die Änderung des Inhalts des Text -Widgets zu ermöglichen. Wir werden es hier verwenden, um WordPress zu bitten, Shortcodes in diesem Widget zu analysieren.
Die Analyse von Kurzcodes in WordPress wird durch die do_shortcode()
-Funktion erreicht. Es akzeptiert einen erforderlichen Parameter, nämlich den zu analysierenden Text und gibt den analysierten Text zurück. Dies bedeutet, dass wir diese Funktion direkt als Rückruffunktion für den widget_text
-Filter verwenden können.
Der folgende Code kann in der Datei functions.php
der Plug-in-Datei oder des Themas verwendet werden:
<code class="language-php"><?php add_filter('widget_text', 'do_shortcode'); ?></code>
Jeder vorhandene Shortcode, den Sie im Text -Widget eingeben, wird jetzt analysiert.
Erstellen Sie ein neues Shortcode -Widget
Alternativ können wir unsere eigenen Widgets erstellen. Da das Standard -Widget "Text" gut funktioniert, können wir seinen Code einfach aus dem folgenden Code anpassen (befindet sich in der Datei /wp-includes/default-widgets.php
). Es ist erwähnenswert, dass wir unsere eigenen Plugins erstellen und niemals die Core WordPress -Datei ändern sollten.
<code class="language-php"><?php class WP_Widget_Text extends WP_Widget { public function __construct() { $widget_ops = array('classname' => 'widget_text', 'description' => __('Arbitrary text or HTML.')); $control_ops = array('width' => 400, 'height' => 350); parent::__construct('text', __('Text'), $widget_ops, $control_ops); } // ... (其余代码与原文相同) ... } ?></code>
Wir müssen nicht viel ändern. Das erste, was zu ändern ist, ist der Name der Klasse. Ich habe mich entschieden, es WP_Widget_Shortcodes
zu nennen, aber Sie können einen beliebigen Namen auswählen, den Sie mögen. Da diese Art von Konstruktor einige Informationen über das Widget selbst einrichtet, müssen wir es auch ändern.
<code class="language-php"><?php public function __construct() { $widget_ops = array('classname' => 'widget_shortcodes', 'description' => __('Arbitrary text or HTML with shortcodes.')); $control_ops = array('width' => 400, 'height' => 350); parent::__construct('shortcodes', __('Shortcodes'), $widget_ops, $control_ops); } ?></code>
Ein weiterer Ort, der geändert werden muss, ist in der Methode widget()
, in der beschreibt, wie WordPress Widgets anzeigt. Wir ändern den Inhalt der $text
-Variablen, die den zu angezeigten Text enthalten. Wir löschen den Aufruf zum widget_text
Filter und wenden die Funktion do_shortcode()
auf diesen Inhalt an.
<code class="language-php"><?php add_filter('widget_text', 'do_shortcode'); ?></code>
Dann müssen wir unser Widget registrieren, damit wir es wie jedes andere Widget hinzufügen können. Dies kann durch die widgets_init
-Operation erfolgen, die ausgelöst wird, sobald WordPress das Standard -Widget registriert.
<code class="language-php"><?php class WP_Widget_Text extends WP_Widget { public function __construct() { $widget_ops = array('classname' => 'widget_text', 'description' => __('Arbitrary text or HTML.')); $control_ops = array('width' => 400, 'height' => 350); parent::__construct('text', __('Text'), $widget_ops, $control_ops); } // ... (其余代码与原文相同) ... } ?></code>
Sie können jetzt unser Widget in der Liste der verfügbaren Widgets finden. Sie können es zu jedem kompatiblen Bereich hinzufügen und es erklärt alle Shortcodes, die Sie verwenden.
Schlussfolgerung
Wie oben erwähnt, ist das Aktivieren von Shortcodes in Widgets nicht kompliziert, aber Sie müssen vorsichtig sein. Tatsächlich ist nicht jeder Shortcode zum Anzeigen der Position eines Widgets geeignet. Wenn der kurze Code eine feste Breite hat, kann dies ein Problem sein.
Beachten Sie, dass die Änderungen, die wir im Standardtext -Widget verwenden, minimal sind. Wenn Sie das Widget anpassen möchten, können Sie alles andere ändern.
(Folgendes ist eine pseudo-originale Arbeit im ursprünglichen FAQ
FAQs über die Verwendung von Kurzcodes in WordPress -Widgets
[]
Um einen eigenen Shortcode für das Widget zu erstellen, müssen Sie in der functions.php
-Datei des Themas eine benutzerdefinierte Funktion hinzufügen. Diese Funktion sollte die Funktion des Shortcode definieren. Nach dem Definieren der Funktion können Sie die Funktion add_shortcode()
verwenden, um einen neuen Shortcode zu erstellen.
kurze Codes können in jedem Widget verwendet werden, das die Texteingabe akzeptiert. Dies schließt das Text -Widget, das benutzerdefinierte HTML -Widget und andere Widgets ein. Allerdings unterstützen nicht alle Widgets Shortcodes.
do_shortcode
-Funktion in WordPress? -Funktion in WordPress wird verwendet, um nach Shortcodes in Inhalten zu suchen und Shortcodes über seine Haken zu filtern. Sie können tatsächlich Shortcodes außerhalb des Artikelseditors verwenden, z. B. in Widgets oder Themendateien. do_shortcode
-Funktionen in Plug-Ins oder Themendateien suchen. add_shortcode
Das obige ist der detaillierte Inhalt vonSchneller Tipp: Verwenden Sie Shortcodes in Widgets in WordPress. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!