Dynamische Sidebar bedingt

BEARBEITEN

Antwort wurde hier gefunden: is_active_sidebar () Gibt immer False zurück

Von Benutzer: s_ha_dum


Ich erstelle dynamisch Seitenleisten und registriere sie für jede Seite der obersten Ebene:

Registrieren Sie Seitenleisten dynamisch für jede Seite auf oberster Ebene

Das Problem ist, ich möchte testen, ob eine Seitenleiste für diese Seite nicht existiert, um den Standard zu verwenden:

 if(is_dynamic_sidebar(get_the_title())) dynamic_sidebar(get_the_title()); else dynamic_sidebar('Default'); 

Ich habe versucht zu testen

if(is_dynamic_sidebar(get_the_title()) && dynamic_sidebar(get_the_title()) aber dies wiederholt den Inhalt der Seitenleiste aus irgendeinem Grund zweimal.

if(is_dynamic_sidebar(get_the_title()) && is_active_sidebar(get_the_title()) aber das if(is_dynamic_sidebar(get_the_title()) && is_active_sidebar(get_the_title()) nur alle meine Sidebars oder wenn ich das && zu || ändere, wird es normal angezeigt, außer nimmer benutzt default.So ziemlich viel auf meinen Unterseiten, es verwendet nein Sidebar: Hat jemand Vorschläge was ich machen kann?

Aktualisierter Code dank @Ravs

 if(!is_active_sidebar(get_the_title())) dynamic_sidebar(get_the_title()); else dynamic_sidebar('Default'); 

Solutions Collecting From Web of "Dynamische Sidebar bedingt"

Der dynamische Seitenleistencode, den Sie verwenden, verwendet den Seitentitel der obersten Seite, um die Seitenleiste zu benennen. get_the_title findet den Titel der Seite, auf der Sie sich befinden, nicht den Titel der obersten Seite. Sie benötigen eine function, die Ihnen den Titel der obersten Seite in einer Seitenhierarchie mitteilt.

 /** * Get the topmost page title. * * @link http://wordpress.stackexchange.com/questions/107843/dynamic-sidebar-conditional */ function wpse_107843_get_top_parent_page_title() { global $post; $parent_page = get_post( $post->ID ); // Recurse to top parent. while ( $parent_page->post_parent != 0 ) $parent_page = get_post( $parent_page->post_parent ); return $parent_page->post_title; } 

Da Sie eine bestimmte Seitenleiste auf übergeordneten Seiten und eine Standard-Seitenleiste für Unterseiten haben, kann Ihre Bedingung (ich nehme an, dass Sie in der WordPress-Schleife sind) sein.

  1. Suchen Sie nach der Seite, der übergeordneten Seite oder der Unterseite.
  2. Überprüfen Sie den Sidebar-Widgetbereich für die Seite, wenn die aktuelle Seite die übergeordnete Seite ist

dynamic_sidebar True zurück, wenn die Widget-Sidebar gefunden und aufgerufen wurde. Falsch, wenn nicht gefunden oder nicht angerufen.

  if($post->post_parent == 0 ){ // if page is a parent page if(dynamic_sidebar(get_the_title()) && is_active_sidebar(get_the_title())) dynamic_sidebar(get_the_title()); else dynamic_sidebar('Default'); } else{ // if page is a sub page dynamic_sidebar('Default'); }