wake-up-neo.net

dynamic_sidebar () gibt im Admin-Bereich false zurück

Jeder Grund, warum dieser Code nicht im Admin-Bereich von WordPress funktioniert (speziell wenn das Problem auf anderen Seiten weiterhin besteht), funktioniert aber einwandfrei

ob_start();
    dynamic_sidebar('frontpage_widgets');
$content = ob_get_clean();

print_r($content); // nothing 

die Seitenleisten werden von dem eingestellt, was ich sehe (weil ich meinen Code aufgerufen habe, der die Seitenleisten registriert hat)

print_r($GLOBALS['wp_registered_sidebars'])

    Array
    (
        [frontpage_widgets] => Array
            (
                [name] => Frontpage Widgets
                [id] => frontpage_widgets
                [description] => Widgets for the Frontpage Widgetspage
                [class] => 
                [before_widget] => 
                ...

Verhindert etwas, dass die Widgets im Admin-Bereich angezeigt werden?

Bearbeiten - Ich scheine, dass die Widgets nicht global festgelegt werden: $ wp_registered_widgets ist leer

3
rugbert

Ja, Sie müssen sicherstellen, dass diese Funktion irgendwann nach der Registrierung der Seitenleisten aktiviert wird. Es ist nicht ganz erklärt, aber im Codex impliziert, dass diese Funktion dynamic_sidebar( $index ) erwartet, dass sie registriert und als registriert geladen werden, wenn sie ausgeführt wird. Andernfalls stimmt nichts mit dem Argument $index überein, in Ihrem Fall 'frontpage_widgets'.

Wenn Ihre Seitenleisten nach Nummer registriert wurden, sollten sie nach Nummer abgerufen werden. Wenn sie Namen hatten, als Sie sie registriert haben, verwenden Sie deren Namen, um sie abzurufen.

Wenn ich aus der Hand raten müsste, würde ich sagen, wp_loaded() ist die früheste Aktion, an die Sie sie sicher anhängen können. Oder wenn Sie müssen, können Sie sich in wp_register_sidebar_widget einbinden, um sich in das spezifische Widget einzuhängen, auf das Sie testen.

Ich nehme an, Sie haben nur die Objektpufferung zum Debuggen verwendet. Sie finden fast immer eine geeignete Aktion zum Einhängen oder einen Bereich Ihrer Vorlage zum Bearbeiten. Ich finde, dass es von unschätzbarem Wert ist, die Reihenfolge zu verstehen, in der Aktionen ausgelöst werden. Schauen Sie sich diese Antwort von birgire als gute Referenz an, wenn verschiedene Aktionen abgefeuert werden. Dies erleichtert das Debuggen erheblich. Normalerweise ist es ziemlich intuitiv, den richtigen Ort zum Anhängen zu finden, je nachdem, mit was Sie arbeiten.

2
iyrin