WordPress : Comment déterminer dans quelle zone de barre latérale enregistrée un widget personnalisé est chargé
J’ai un widget personnalisé auquel je souhaite appliquer une logique conditionnelle, en fonction de l’ID enregistré de sa barre latérale parent.
Par exemple, mon thème a 6 zones de widgets de barre latérale enregistrées.
J’ai un widget personnalisé qui peut être chargé dans l’une de ces 6 zones de widgets de la barre latérale.
Existe-t-il un moyen de scripter le code du widget ci-dessous afin de déterminer si le widget est chargé dans une ou plusieurs des zones de widget de la barre latérale enregistrées ?
Par exemple, j’enregistre les zones de widget de ma barre latérale comme suit :
register_sidebar(array(
'name' => 'Footer Area One',
'id' => 'home-footer-widget',
'description' => __( 'Appears just above the main footer area. Spans across the entire width of page'),
'before_widget' => '<div class="footer-pre-home %2$s">',
'after_widget' => '</div>',
'before_title' => '<h4>',
'after_title' => '</h4>',
));
register_sidebar(array(
'name' => 'Footer Area Two',
'id' => 'footer-two',
'description' => __( 'Appears just above the main footer area. Spans across the entire width of page'),
'before_widget' => '<div class="footer-two %2$s">',
'after_widget' => '</div>',
'before_title' => '<h4>',
'after_title' => '</h4>',
));
Et j’ai un widget personnalisé qui a ce code :
function widget( $args, $instance ) {
extract($args);
$title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance );
$text = apply_filters( 'widget_text', $instance['text'], $instance );
$hide_title = isset( $instance['hide_title'] ) ? $instance['hide_title'] : false;
$filter = isset( $instance['filter'] ) ? $instance['filter'] : false;
echo $before_widget;
if ( $title && !$hide_title )echo $before_title . $title . $after_title;
if ( $text ) echo $filter ? wpautop($text) : $text;
echo $after_widget;
}
Et je veux placer du code dans la fonction widget() qui détermine si le widget se trouve dans l’un des deux widgets de barre latérale enregistrés nommés ci-dessus. S’il se trouve dans l’une de ces deux barres latérales nommées, je ne ferai pas écho au code du widget avant/après dans ce cas.
Solution n°1 trouvée
L’information que vous voulez est dans le $args
paramètre.
var_dump($args); // inside your widget method
Regardez les éléments de tableau ‘name’ et ‘id’.
Votre code devrait ressembler à ceci :
function widget( $args, $instance ) {
extract($args);
$title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance );
$text = apply_filters( 'widget_text', $instance['text'], $instance );
$hide_title = isset( $instance['hide_title'] ) ? $instance['hide_title'] : false;
$filter = isset( $instance['filter'] ) ? $instance['filter'] : false;
if ('home-footer-widget' != $args['id'] && 'footer-two' != $args['id']) echo $before_widget;
if ( $title && !$hide_title )echo $before_title . $title . $after_title;
if ( $text ) echo $filter ? wpautop($text) : $text;
if ('home-footer-widget' != $args['id'] && 'footer-two' != $args['id']) echo $after_widget;
}
0 commentaire