J'essaie de trouver un moyen de désactiver la sélection de la catégorie parent dans Wordpress 3.5.1 (écran de l'éditeur de publication) uniquement lorsque cette catégorie parent contient des catégories enfants.
Ma structure:
Une solution jQuery permettant de désactiver la section de de toutes catégories parent (que l’on ait ou non des catégories enfants) peut être trouvée ici:
J'ai désactivé les boîtes parent pour éviter de déplacer les parents vers la gauche.
add_action( 'admin_footer-post.php', 'wpse_98274_disable_top_categories_checkboxes' );
add_action( 'admin_footer-post-new.php', 'wpse_98274_disable_top_categories_checkboxes' );
/**
* Disable parent checkboxes in Post Editor.
*/
function wpse_98274_disable_top_categories_checkboxes() {
global $post_type;
if ( 'post' != $post_type )
return;
?>
<script type="text/javascript">
jQuery( "#category-all ul.children" ).each( function() {
jQuery(this).closest( "ul" ).parent().children().children( "input" ).attr( 'disabled', 'disabled' )
});
</script>
<?php
}
Cependant, une fois que les catégories sont mises hors service pour cette "fonctionnalité" horrible qui les déplace en haut de la boîte, jQuery échoue. J'ai emprunté ce code à un plugin .
add_filter( 'wp_terms_checklist_args', 'wpse_98274_checklist_args' );
/**
* Remove horrid feature that places checked categories on top.
*/
function wpse_98274_checklist_args( $args ) {
$args['checked_ontop'] = false;
return $args;
}
Si vous souhaitez utiliser ceci avec des publications personnalisées, remplacez où il est écrit post
dans l'instruction if par la slug
de votre type de publication.
Avec les taxonomies personnalisées, remplacez où il est dit #category-all
par le nom de votre taxonomie (par exemple, #taxonomyname-all
).
Votre situation sera probablement les deux si vous regardez cela.
Pour plusieurs taxonomies/types de publication en même temps: une simple solution consiste à dupliquer le code entier et, en plus des modifications ci-dessus, de créer un nouveau nom où il est indiqué wpse_98274_disable_top_categories_checkboxes
- le 98274
fait simplement référence à cette page (consultez cette page). URL) et n’appelle rien de spécial dans WordPress. Ou plus élégant est de faire plusieurs déclarations si.
Vous pouvez utiliser ce plugin, il va résoudre votre problème