web-dev-qa-db-fra.com

Rendre la catégorie parent non sélectionnable quand il y a des catégories enfants

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:

  • Catégorie 1 (pas d'enfants, autoriser les utilisateurs à publier, conserver l'option de sélection)
  • Galeries (catégorie parente AVEC enfants, supprimer l'option de sélection pour empêcher les utilisateurs d'envoyer des messages)
    • Utilisateur 1 (catégorie enfant, permettre à l'utilisateur de poster, conserver l'option de sélection)

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:

Rendre les catégories parentes non sélectionnables

1
Paul Thomson

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;
}
5

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.

0
imagefact

Vous pouvez utiliser ce plugin, il va résoudre votre problème

https://wordpress.org/plugins/adjust-admin-categories/

0
Moosa SH