web-dev-qa-db-fra.com

Ajouter un ID d'élément personnalisé en fonction de widget, de barre latérale ou de pied de page

Je crée un widget personnalisé et je souhaite renvoyer un ID d'élément différent. L'ID serait quelque chose comme, instafeed-sidebar et instafeed-footer. Cela dépend où le widget a été ajouté.

Enregistrer les barres latérales:

register_sidebar( array(
    'name'          => esc_html__( 'Post Sidebar', 'nubia' ),
    'id'            => 'post-sidebar',
    'description'   => esc_html__( '', 'nubia' ),
    'before_widget' => '<section id="%1$s" class="c-widget c-widget--sidebar %2$s">',
    'after_widget'  => '</section>',
    'before_title'  => '<h5 class="c-widget--sidebar__title">',
    'after_title'   => '</h5>',
  ) );

  register_sidebar( array(
    'name'          => esc_html__( 'Footer First', 'nubia' ),
    'id'            => 'footer-first',
    'description'   => esc_html__( '', 'nubia' ),
    'before_widget' => '<section id="%1$s" class="c-widget c-widget--footer %2$s">',
    'after_widget'  => '</section>',
    'before_title'  => '<h5 class="c-widget--footer__title">',
    'after_title'   => '</h5>',
  ) );

Code du widget:

public function widget( $args, $instance ) {
  extract($args);

  // ...

  <div id='instafeed' class='c-widget-instagram'></div>

  <?php

  echo $after_widget;
}

Je ne souhaite pas utiliser l'identifiant dynamique du widget, mais plutôt un identifiant que je choisis.

Donc, si le widget ajouté à la barre latérale enregistrée, l'élément serait:

<div id='instafeed-sidebar' class='c-widget-instagram'></div>

Si le widget était ajouté au pied de page, l'élément serait:

<div id='instafeed-footer' class='c-widget-instagram'></div>

Merci,

1
Ahmad Ajmi

Résolu en suivant les conseils de @mmm. Utiliser $args["id"] a fait l'affaire.

Utiliser $args["id"] retournera ce qui suit:

post-sidebar

footer-first

Avec un peu de changement, mon code final est:

public function widget( $args, $instance ) {
  extract($args);

  // ...

  <div id='instafeed-<?php echo explode("-", $args["id"])[0] ;?>' class='c-widget-instagram'></div>

  <?php

  echo $after_widget;
}

Le résultat est:

<div id='instafeed-post' class='c-widget-instagram'></div>
<div id='instafeed-footer' class='c-widget-instagram'></div>

Merci

2
Ahmad Ajmi