web-dev-qa-db-de.com

Shortcodes, Ausgabepufferung und WordPress-Funktionen

Ich habe ein paar lange Formulare, die ich als Shortcodes ausgeben möchte. Shortcode API zeigt das an

Wenn der Shortcode viel HTML erzeugt, kann mit ob_start die Ausgabe erfasst und in einen String konvertiert werden

Dies scheint genau mein Fall zu sein. Außerdem möchte ich WordPress-Funktionen in meinem HTML-Code wie folgt verwenden:

function my_shortcode_register_form( $atts, $content = null ) {

    ob_start();
    ?>
    <div id="reg_form">
        <h2><?php echo __('Login info', 'my-plugin-domain'); ?></h2>
        <!-- and so on -->

    </div>
    <p><a href="<?php echo site_url( 'dashboard' ); ?>"><?php echo __('Go to Dashboard', 'my-plugin-domain'); ?></a>!</p>
    <?php
    $output_string = ob_get_contents();
    ob_end_clean();

    return $output_string;
}

add_shortcode('register_form', array( $this, 'my_shortcode_register_form' ));

Es funktioniert gut, aber ich interessiere mich für Best Practices, potenzielle Fehler sowie die Leistung. Gibt es Nachteile dieses Ansatzes? Kann irgendetwas schief gehen?

Ich habe mindestens eine Frage gesehen, bei der die Warnung nicht nur die Ausgabepufferung verwendet, es sei denn, dies ist absolut notwendig. Sollte ich diese Formulare stattdessen nur in Vorlagen einfügen?

3
montrealist

Sollte ich diese Formulare stattdessen nur in Vorlagen einfügen?

Dies hängt vom jeweiligen Formular ab, und Sie haben nicht viele Details zur Funktionsweise Ihrer Formulare gedruckt. Shortcodes sind nett, aber nicht das richtige Werkzeug für jeden Job.

Ich würde:

  1. Bevorzugen Sie eine dedizierte Vorlage gegenüber einem Shortcode, insbesondere für lange Formulare. Sie müssen $_POST- oder $_GET-Daten im Shortcode verarbeiten oder prüfen, ob diese Daten in Ihrem Header oder in einem anderen solchen vorhanden sind, und das wird unübersichtlich. Außerdem ist der Shortcode mit einem Mehraufwand verbunden, der möglicherweise vermieden werden kann.
  2. Stellen Sie sich eine Ausnahme von Regel 1 vor und erstellen Sie einen Shortcode, wenn das Formular auf mehreren Seiten wiederverwendet werden muss oder wenn eine solche Wiederverwendung zumindest eine plausible Möglichkeit darstellt. Ehrlich gesagt, wenn der "Wiederverwendungstest" fehlschlägt, sehe ich den Sinn des Shortcodes überhaupt nicht.
  3. Betrachten Sie eine Ausnahme zu Regel 1 und 2, wenn Sie bearbeitbaren Inhalt um den Shortcode benötigen.
  4. Wenn Sie ein Plugin schreiben, ist ein Shortcode eine Ihrer besseren Möglichkeiten. Sie können die Benutzer anweisen, eine Seitenvorlage zu erstellen und Code einzufügen, oder die Umschreiberegeln ändern, um eine eigene Pseudoseite zu erstellen, aber die erste ist für die meisten Benutzer abstoßend und die zweite ist komplex. Selbst die Aufforderung, einen Shortcode in den Post-Body einzufügen, kann Panik auslösen, aber irgendwann muss die Menschheit lernen, mit Computern umzugehen.

Ich bin mir sicher, dass es noch andere Probleme gibt, aber diese fallen mir auf.

3
s_ha_dum