it-swarm.com.de

Überprüfen Sie, ob auf der aktuellen Seite eine Seitenleiste aktiv ist

Ist es möglich zu überprüfen, ob auf der aktuellen Seite eine Seitenleiste aktiv ist?

So was:

@bearbeiten

Diese Funktion gibt auch dann true zurück, wenn auf der aktuellen Seite diese Seitenleiste nicht aktiv ist ...

<?php if(is_active_sidebar('sidebar-1')) {
// sidebar-1 is active...
} ?>

Ich muss jedoch prüfen, ob eine Seitenleiste aktiv ist (ohne Angabe des Seitenleistennamens), und ich muss nur die aktuelle Seite überprüfen, nicht alle Seiten, z. B .:

<?php if(any_sidebar_active_on_this_page()) {
// has sidebar active on this specific page, do something...
} ?>
2
rafaelfndev

Ich glaube, das Problem hier ist ein Problem mit der Umgangssprache.

is_active_sidebar ist nicht seitenabhängig - überprüfen Sie nur, ob auf der gesamten Website Daten vorhanden sind.

Sie stellen eine andere Frage. Klingt so, als würden Sie fragen: "Verweist diese Vorlage auf Seitenleisten und enthält eine dieser Seitenleisten Daten?" Es hört sich auch so an, als ob Sie die Namen der Seitenleiste überhaupt nicht referenzieren möchten, und Sie möchten, dass dies eine allgemeine Frage ist.

Das letzte Bit erschwert dies und kann es möglicherweise zu einem Architekturproblem machen - nicht zu einem WordPress-Problem. Stellen Sie sich WordPress als einen Kellner vor - es nimmt nur Ihre Bestellungen entgegen und erzielt Ergebnisse. Es wurde nicht für Sie gebaut, um Fragen zu stellen wie: "Isst jemand im Restaurant Steak?" - Also hat es nichts für dich da.

Sie KÖNNTEN sich mit https://codex.wordpress.org/Plugin_API/Action_Reference/dynamic_sidebar verbinden.

Dann können Sie jederzeit eine Variable setzen oder eine Funktion aufrufen, wenn jemand eine Seitenleiste mit Daten aufruft. Auf diese Weise können Sie in diesen Momenten reagieren.

2
foreach ( $GLOBALS['wp_registered_sidebars'] as $sidebar ) {    
    if(is_active_sidebar($sidebar['name'])) {
        // $sidebar['name'] is active...
    }
}

Dadurch wird die Liste der registrierten Seitenleisten durchlaufen und dann bei jedem Laden der Seite überprüft, ob eine davon vorhanden ist.

0
Sid