Verifică dacă sidebar-ul înregistrat este activ și are conținut widget
Aș dori să verific dacă un sidebar înregistrat are conținut widget - dar nu pot găsi o funcție WP pentru asta - is_active_widget verifică dacă are conținut, dar nu dacă există sau nu.
function ql_widget( $widget, $widget_name, $element = 'sider' ){
if ( $widget ) { // s-a transmis numele widget-ului ##
// verifică dacă widget-ul este activ - returnează html și conținutul widget-ului dacă este adevărat ##
if ( is_active_sidebar( $widget ) ) {
echo '
<div class="'.$element.'">';
dynamic_sidebar( $widget );
echo '</div>';
} else {
// afișează eroare dacă widget-ul solicitat nu există sau este gol ##
if ( ql_user_is_administator() ) { // utilizatorul este admin ##
if ( dynamic_sidebar( $widget ) ) { // gol ##
$message = 'gol';
} else { // ID-ul sau numele widget-ului este greșit ##
$message = 'eroare';
}
?>
<div class="error"><strong>Widget <?php echo $message; ?>:</strong>
<?php echo $widget_name ? $widget_name : $widget ; ?></div>
<?php
}
}
}
}
Apelez această funcție în pagină folosind:
// încarcă widget ##
// widget_id, numele widget-ului, clasa elementului container ##
ql_widget( 'sidebar-general', 'Sidebar Standard', 'sider' );
Sidebar-urile sunt înregistrate corect cu register_sidebar() și au un ID unic atribuit fiecăruia.
În prezent, această funcție returnează eroarea către administrator dacă widget-ul lipsește sau este gol - aș dori să pot personaliza eroarea pentru a indica dacă lipsește sau este gol
Mulțumesc!
ACTUALIZARE aici este funcția care funcționează: link către pastebin

Puteți verifica dacă o bară laterală este activă și în uz (conține widget-uri cu conținut) folosind is_active_sidebar
, iată un exemplu...
if ( is_active_sidebar( $sidebar ) ) {
// Afișează un text
} else {
// Nu afișa nimic
};
Unde $sidebar
este fie numele, ID-ul sau numărul barei laterale pe care doriți să o verificați.
Actualizare:
Iată o sugestie pentru îmbunătățirea lizibilității funcției dvs.,
function ql_widget( $widget, $widget_name, $element = 'sider' ){
if ( $widget ) {
$message = (ql_user_is_administator() ? 'gol' : 'eroare');
$widget_name = ($widget_name ? $widget_name : $widget);
if ( is_active_sidebar( $widget ) ) {
$html = '<div class="'.$element.'">';
$html .= dynamic_sidebar( $widget );
$html .= '</div>';
echo $html;
} else {
$html = '<div class="error"><strong>Widget ';
$html .= $message;
$html .= '</strong> ';
$html .= $widget_name;
$html .= '</div>';
echo $html;
}
}
} // Acesta este sfârșitul funcției
Și dacă doriți ca mesajul de eroare să apară doar pentru administrator, atunci înfășurați conținutul interior al instrucțiunii else
cu o altă condițională sau schimbați else
în elseif
și efectuați verificarea pentru un administrator și, opțional, finalizați cu o condiție else
pentru a acoperi toate celelalte rezultate, cum ar fi pentru utilizatorii obișnuiți.
Referință Codex: http://codex.wordpress.org/Function_Reference/is_active_sidebar

bingo! - voi actualiza răspunsul pentru a arăta soluția pe care am folosit-o - mulțumesc

Bazat pe răspunsul acceptat, am rezolvat problema mea cu această funcție, sper să vă ajute și mulțumesc, Mridul Aggarwal.
function is_active_sidebar_with_content( $sidebar ) {
$sidebars = wp_get_sidebars_widgets();
if ( isset( $sidebars[ $sidebar ] ) && ! empty( $sidebars[ $sidebar] ) ) {
return true;
}
return false;
}
