Ich möchte überprüfen, ob eine registrierte Seitenleiste Widget-Inhalte enthält - kann aber anscheinend keine WP-Funktion dafür finden - is_active_widget prüft, ob sie Inhalte enthält, aber nicht, ob sie vorhanden sind oder nicht.
function ql_widget( $widget, $widget_name, $element = 'sider' ){
if ( $widget ) { // widget name passed ##
// check if widget is active - return html & widget content if true ##
if ( is_active_sidebar( $widget ) ) {
echo '
<div class="'.$element.'">';
dynamic_sidebar( $widget );
echo '</div>';
} else {
// issue error if requested widget does not exist or is empty ##
if ( ql_user_is_administator() ) { // user is admin ##
if ( dynamic_sidebar( $widget ) ) { // empty ##
$message = 'empty';
} else { // widget ID or name wrong ##
$message = 'error';
}
?>
<div class="error"><strong>Widget <?php echo $message; ?>:</strong>
<?php echo $widget_name ? $widget_name : $widget ; ?></div>
<?php
}
}
}
}
Ich nenne das auf der Seite mit:
// load widget ##
// widget_id, widget name, class of containing element ##
ql_widget( 'sidebar-general', 'Standard Sidebar', 'sider' );
Die Seitenleisten sind korrekt bei register_sidebar () registriert und haben jeweils eine eindeutige ID.
Derzeit gibt diese Funktion den Fehler an den Administrator zurück, wenn das Widget fehlt oder leer ist. Ich möchte den Fehler so anpassen können, dass er anzeigt, ob er fehlt oder leer ist
Vielen Dank!
UPDATE Hier ist die Arbeitsfunktion: Link zum Pastebin
is_dynamic_sidebar
?Sie können überprüfen, ob eine Seitenleiste aktiv ist und verwendet wird (enthält Widgets mit Inhalt), indem Sie Folgendes verwenden
is_active_sidebar
: Hier ein Beispiel ...Wo
$sidebar
ist entweder der Name, die ID oder die Nummer der Seitenleiste, die Sie überprüfen möchten?Aktualisieren:
Hier ist ein Vorschlag zur Verbesserung der Lesbarkeit Ihrer Funktion:
Wenn Sie möchten, dass die Fehlermeldung nur bei admin angezeigt wird, schließen Sie den inneren Inhalt der
else
Anweisung mit einer anderen Bedingung ein oder ändern Sie dieelse
zuelseif
und führen Sie die Prüfung für einen Administrator aus und schließen Sie optional mit einerelse
Bedingung ab, um alle anderen Ergebnisse zu erfüllen, z für reguläre Benutzer. Codex-Referenz: http://codex.wordpress.org/Function_Reference/is_active_sidebarquelle