Je travaille sur un plugin qui permet à l'utilisateur de créer des "types de page/publication", de personnaliser le style de texte, puis de marquer une page/publication avec ce type. Tout cela fonctionne. Mon problème est que ce plugin doit également leur permettre d'attacher des widgets à ce type.
Je n'ai aucun moyen de savoir combien de "types" il y a à tout moment.
Le plugin fonctionne comme ceci:
Lorsque la page/publication est affichée, la page détecte si elle a un type. Si tel est le cas, il extrait toutes les données pertinentes de ce type.
Tout fonctionne PARFAIT.
Je sais que je dois enregistrer une barre latérale, mais je ne peux pas m'enregistrer pour chaque type car je ne sais pas combien il en existe et l'utilisateur peut créer et supprimer à leur guise.
Mon plan:
Je ne peux pas vraiment utiliser un autre plugin car la fonction sidebar doit se fondre dans mon plugin. Je ne suis même pas sûr que cela va marcher ou même par où commencer. Toute poussée dans la bonne direction serait géniale!
J'ai fini par créer simplement une barre latérale et tout élément qui y était placé, une liste déroulante a été ajoutée pour lui attribuer un emplacement spécial.
$type . '_sidebar'
$type . '_sidebar'
(par exemple dog_sidebar
)wp-admin/widgets.php?sidebar_type=dog_sidebar
)Filtrez toutes les barres latérales qui devraient et non être affichées. Vous pouvez utiliser cette fonction:
global $wp_registered_sidebars;
$type =filter_input( INPUT_GET, 'sidebar_type', FILTER_SANITIZE_STRIPPED );
if ( empty( $type ) )
return;
if ( isset( $wp_registered_sidebars[ $type ] ) ) {
$keep = array( $type => $wp_registered_sidebars[ $type ] );
$wp_registered_sidebars = array_intersect_key( $keep, $wp_registered_sidebars );
}
}
add_action( 'sidebar_admin_setup', 'filter_sidebars', 1, 0 );
Par exemple, dans Twenty Twelve, il y a trois barres latérales enregistrées (les ID de la barre latérale): sidebar-1, sidebar-2 et sidebar-3. Si vous allez maintenant à your-blogdoma.in/wp-admin/widgets.php?sidebar_type=sidebar-3
, il ne reste que la troisième barre latérale (avec l'ID sidebar-3
).
Si vous avez enregistré une barre latérale dog_sidebar
et que vous visitez your-blogdoma.in/wp-admin/widgets.php?sidebar_type=dog_sidebar
, la seule barre latérale visible est la "Barre latérale pour chien" (avec l'ID dog_sidebar
).
Le plugin stocke les données de la barre latérale en fonction de l'identifiant du "type"
Il n'y a pas besoin de faire ça. Chaque barre latérale stocke ses propres données. Mais peut-être ai-je mal compris ce que vous tentiez de faire avec " stocke les données de la barre latérale ".