J'essaie d'obtenir le plugin collapsible-widget-area afin que chaque widget qu'il crée à l'intérieur de la zone réductible ait un identifiant unique <div>
après son titre.
function get_args() {
$this->args = apply_filters( 'collapsible-widget-area-args', array(
'name' => __( 'Collapsible Widget Area', 'collapsible-widget-area' ),
'id' => 'collapsible-widget-area',
'description' => __( 'Drag widgets into this area in order to use them inside of the Collapsible Widget.', 'collapsible-widget-area' ),
'before_widget' => '<div id="%1$s" class="widget %2$s collapsible-item">',
'after_widget' => '</div>',
'before_title' => '<h2 class="widgettitle">',
'after_title' => '</h2><div id="i_want_to_be_a_unique_id_for_every_widget_but_i_am_not"></div>',
) );
$this->sidebar_id = $this->args['id'];
if ( ! class_exists( 'collapsible_widget' ) ) {
require_once( 'class.collapsible-widget.php' );
}
add_action( 'widgets_init', array( $this, 'register_widget' ) );
}
C'est la fonction qui définit les arguments, mais si je comprends bien, elle n'est appelée qu'une fois et les arguments s'appliquent à tous les widgets. Est-ce que quelqu'un peut me dire maintenant d'utiliser un objet comme le %1$s
pour le before_widget
ou même mieux la même valeur exacte dans le after_title
?
L'ensemble du plugin peut être visualisé à dans le plugin wordpress svn , la fonction que je cherche ci-dessus appartient à la classe .collapsible-widget-area.php et la seule chose que j’ai ajoutée jusqu’à présent est le <div id="i_want_to_be_a_unique_id_for_every_widget_but_i_am_not"></div>
.
Ce n'est pas une question "écris-moi un programme", c'est juste un exemple que je donne. Peut-être faut-il une autre solution complète pour y parvenir, ou c'est très facile à faire avec ce plugin qui étend déjà la classe de widgets wordpress, je ne le sais pas.
En regardant widget.php dans tracsprintf()
uniquement s'exécute sur before_widget
(ligne 884):
$params[0]['before_widget'] = sprintf($params[0]['before_widget'], $id, $classname_);
Par conséquent, cela ne fonctionnera pour aucun des autres arguments.
Je me demandais si vous pouviez utiliser le filtre dynamic_sidebar_params
, mais les arguments $ id et $ classname_ ne sont pas transmis au filtre. En dehors du cœur du piratage, je ne suis pas sûr qu'il y ait autre chose à faire que de modifier le bootstrap de Twitter ou d'utiliser jQuery pour ajouter l'ID après le chargement de la page.