do_shortcode () innerhalb der Admin-Seite

13

Ich verwende einige Plugins mit Shortcodes. Anstatt jedoch eine öffentliche Seite für den Inhalt zu erstellen, habe ich einige neue Seiten innerhalb des Administrators mit erstellt add_menu_pageund muss wissen, wie ich do_shortcode()in diesem Kontext vorgehen soll .

So wie es aussieht, spuckt die gesamte Funktion die Zeichenfolge aus. Ich gehe davon aus, dass die Shortcode-API auf einer Admin-Seite nicht verfügbar ist.

Wie komme ich darum herum? Es gibt keine Dokumentation, die erklärt, wie man Shortcodes innerhalb des WP Admin verwendet ... oder ob es überhaupt möglich ist.


Insbesondere versuche ich, WooCommerce-Shortcodes innerhalb des WP-Administrators zu verwenden. Ich hasse die Tatsache, dass Plugins das WP-Backend nicht für die Account- / Benutzerverwaltung verwenden.

dcolumbus
quelle
Wer auch immer kam und entschied, dass "ich keine Nachforschungen angestellt habe" und mir eine negative Bewertung ohne Kommentar gab, ist äußerst wenig hilfreich.
Dcolumbus
1
Ich denke, Sie könnten sagen, Shortcodes sind für Front-End-Inhalte ... Versuchen Sie, ein anderes Plugin zu verwenden, um Inhalte für Ihre eigene Plugin-Admin-Seite zu generieren?
Damien
@ dcolumbus Ich stimme zu. Ich habe in letzter Zeit ein paar falsche Abstimmungen gesehen, sicherlich mehr als ich in der Vergangenheit gesehen habe. IMO dies ist eine ehrliche (und ziemlich geniale) Frage, also
versuche
Wenn Sie eine Admin - Seite erstellt haben , dann können Sie die Ausgabe angeben - warum brauchen Sie / verwenden möchten do_shortcode(). Können Sie ein Beispiel geben?
Stephen Harris
Insbesondere versuche ich, WooCommerce-Shortcodes zu verwenden. Seiten zur Benutzerverwaltung und Kontoverwaltung.
Dcolumbus

Antworten:

9

Anstatt aufzurufen, rufen Sie do_shortcode()einfach die mit dem Shortcode verknüpfte Funktion auf.

Beispiel

Es gibt einen benannten Shortcode [example]und eine als Shortcode-Handler registrierte Funktion:

function example_shortcode( $atts = array(), $content = '' )
{
    extract( 
            shortcode_atts( 
            array (
            'before' => '',
            'after' => '',
            ), 
            $atts 
       )
   );

    return $before . $content . $after;
}
add_shortcode( 'example', 'example_shortcode' );

In Ihrer Admin-Seite rufen Sie einfach die Funktion auf:

echo example_shortcode( 
    array ( 'before' => 'This ', 'after' => '!' ), 
    'works' 
);

Ausgang: This works!.

Schneller und zuverlässiger als do_shortcode().

fuxia
quelle
1
Daran hatte ich gar nicht gedacht!
Andererseits
Ich habe keine Ahnung, warum ich auch nicht daran gedacht habe ... Ich werde es versuchen und berichten!
Dcolumbus
Ein Nachteil davon ist, dass es kaputt geht, wenn der Autor des Plugins die Rückruffunktion des Shortcodes in Zukunft überarbeitet. Änderungen am Shortcode selbst sind wahrscheinlich abwärtskompatibel, es ist jedoch weniger wahrscheinlich, dass die internen Funktionsnamen des Plugins geändert werden.
Ian Dunn
2

Es scheint, dass die Shortcode-API im Administrator verfügbar ist , aber die Ausgabe hängt vom fraglichen Shortcode-Tag ab.

Das eingebaute Programm [caption]funktioniert wie erwartet, [embed]das nicht (dies liegt daran, dass die eingebettete API den Shortcode "träge lädt" und vom the_contentauszuführenden Filter abhängt , also technisch gesehen nicht am Fehler der Shortcode-API).

Fazit: Es hängt ganz davon ab, wie und wann das Tag registriert ist und was es bei der Ausführung tut / annimmt.

@dcolumbus Von welchem ​​Tag sprechen wir in Ihrem Fall?

TheDeadMedic
quelle
1
Außerdem erwarten einige Tags, dass get_the_ID()sie eine Beitrags-ID zurückgeben.
Stephen Harris