Sind PHP-Vorlagen-Shortcodes in Ordnung?

Kann ich nur jedem sagen, dass die Verwendung von Shortcodes, die in Vorlagen eingebettet sind, das “Richtige” ist? Ich habe sie getestet und sie funktionieren gut – aber ich wollte nur alle Gedanken. Vielen Dank

Hier ist ein Beispiel:

 

Solutions Collecting From Web of "Sind PHP-Vorlagen-Shortcodes in Ordnung?"

Ist es o.k?

Ja!

Ist es optimal?

Nein

Was wäre besser?

Shortcodes bilden PHP-functionen ab, warum also nicht den mittleren Mann ausschneiden und direkt zur ursprünglichen function wechseln?

Gibt es noch andere Nachteile?

Ja!

Dieser Shortcode musste irgendwo herkommen, jetzt hast du eine Abhängigkeit, vielleicht wird das Plugin, das den Shortcode hat, deaktiviert, wer weiß

Gibt es irgendwelche Upsides?

Ja! Es ist viel einfacher, einen Galerie-Shortcode programmatisch zu erstellen und ihn dann in do_shortcode zu do_shortcode als ihn von Grund auf neu zu erstellen.

Selbst wenn Sie den Shortcode umgehen und direkt zur ursprünglichen function wechseln, haben Sie immer noch das oben erwähnte Problem. Wenn der Kurzwahlcode nicht vorhanden ist, wird er in eine leere Zeichenfolge zurückgesetzt. Sie können den Shortcode auch in Post-Inhalten verwenden

Also am besten Shotcodes NUR in Widgets + Seiten + Posts verwenden?

Ist es in Ordnung ? Ja! Aber ist es das Beste ? Wahrscheinlich nicht

Shortcodes sind großartig! Aber erinnern Sie sich an ihren Zweck, wenn Sie Sachen in eine Vorlage einfügen müssen, brauchen Sie keinen Shortcode zu verwenden, aber wenn Bedarf besteht, ist diese Option immer da. Die function do_shortcode ist nur ein Werkzeug, und sie dienen dazu, Dinge in Inhalte do_shortcode Verwenden Sie sie nicht als Grundlage für Ihre Site oder Ihr Framework. Ich habe viele Websites erstellt, und ich musste das nicht tun

Shortcodes, die auf diese Weise erstellt werden, sind ein weniger finsterer Verwandter von eval . Es ist in Ordnung, wenn Sie beabsichtigen, einem Benutzer eine Option, aber keine akzeptable Codierungspraxis zu geben.

Wenn Sie eine function auf diese Weise aktivieren, verlieren Sie drei Dinge

  1. Code Lesbarkeit. Was genau soll dort gemacht werden? Ich werde es nicht erraten können, ohne auf die Implementierung des Shortcodes zu schauen, zu dem ich kein Tool finden kann.

  2. Vorhersagbarkeit. Was passiert, wenn die Shortcode-Attribute in einer neuen Version geändert werden? Was passiert, wenn der functionscode selbst etwas völlig anderes tut, als Sie erwarten? Wenn Sie eine function direkt aufrufen, werden Sie wahrscheinlich Fehler bekommen, die Ihre Aufmerksamkeit auf inkompatible Änderungen in der Oberfläche lenken, aber einen Shortcode verwenden, den Sie nur nicht kennen, bevor sich Benutzer beschweren.

  3. Testbarkeit. Folgt von dem zweiten Punkt, aber es lohnt sich, es zu betonen. Wie werden Sie Ihren Code testen, wenn Sie nicht wirklich wissen, was passieren soll?

Wenn Sie speziell nach Flexibilität suchen, scheint es mir, dass ein besserer Ansatz darin besteht, Ihren eigenen Aktions-Hook zu kreieren und die Leute daran hängen zu lassen. Sie können angeben, welche Implementierungen des Hakens Sie für nützlich halten, und die Benutzer können sie ändern, wenn sie dies wünschen. Der Punkt hier ist, dass die Intention des Hooks als Mittel zu “etwas Zufälliges kann hier gehen” expliziter ist, als mit einem Shortcode.

Ein Shortcode ist ein Platzhalter für einen PHP-Callback. Als Platzhalter soll es dort verwendet werden, wo PHP nicht direkt verwendet werden kann.

Darüber hinaus führt do_shortcode() in der übergebenen Zeichenfolge eine Regex aus, die nach allen registrierten Shortcodes sucht, was aus Sicht der performance nicht angemessen ist, wenn Sie nur einen Shortcode ausführen und nicht nach allen Shortcodes in einer Zeichenfolge suchen möchten.

Daher gibt es fast keinen Grund, do_shortcode( '[my_shortcode]' ) in einer Vorlagendatei zu verwenden. Es ist sinnvoller, den callback anstelle des Platzhalters zu verwenden.

Es ist jedoch in Ordnung, do_shortcode() zu verwenden, um Strings zu analysieren oder Inhalte zu filtern, die do_shortcode() enthalten, die ausgeführt werden sollen. Eine Vorlagedatei ist jedoch möglicherweise nicht der richtige Ort zum Analysieren von Strings oder zum Filtern von Inhalt. Zum Beispiel möchten Sie möglicherweise Text Widget Inhalt filtern und erlauben Shortcodes darin:

 add_filter( 'widget_text', 'do_shortcode' ); 

do_shortcode() kann auch nützlich sein, wenn Sie die functionalität eines do_shortcode() benötigen, egal welche Ausgabe Sie erhalten oder welcher Callback verwendet wird, Sie benötigen die functionalität.

Zum Beispiel könnte ein Plugin / Theme einen Shortcode neu definieren, zum Beispiel den Gallerie-Shortcode:

 remove_shortcode( 'gallery', 'gallery_shortcode' ); add_shortcode( 'gallery', 'my_gallery_shortcode' ); 

Wenn Sie in diesem Fall die Galeriefunktionalität und nicht die spezifische Ausgabe des callbacks do_shortcode( '[gallery]' ) , kann die Verwendung von do_shortcode( '[gallery]' ) innerhalb eines Themas gerechtfertigt sein. Aber niemand sollte den Galerien- post_gallery deklarieren, stattdessen sollte post_gallery Filter verwendet werden, um die Galerie-Shortcode-Ausgabe zu modifizieren. Daher wäre die Verwendung von do_shortcode('[gallery]') ein sehr nützlicher Anwendungsfall.

Das gleiche Argument gilt für jeden Shortcode und die Verwendung von do_shortcode() ist im Allgemeinen ein sehr do_shortcode() Fall.