web-dev-qa-db-fra.com

Changer les éléments de niveau supérieur en boutons radio dans la boîte à méta Catégories?

Je sais qu'il est possible de changer la liste des catégories WordPress en boutons radio dans le panneau d'administration pour les publications, mais j'aimerais que les boutons radio Parents et les sous-catégories ou les cases à cocher enfants soient quelque chose de similaire.

<ul>
    <li><input type="radio"> Category 1
        <ul class="children">
        <li><input type="checkbox">Category 1 - Sub Cat 1</label></li>
        <li><input type="checkbox">Category 1 - Sub Cat 2</label></li>
        </ul>
    </li>
    <li><input type="radio"> Category 2</li>
    <li><input type="radio"> Category 3</li>
    <li><input type="radio"> Category 4
        <ul class="children">
        <li><input type="checkbox">Category 4 - Sub Cat 1</label></li>
        <li><input type="checkbox">Category 4 - Sub Cat 2</label></li>
        </ul>
    </li>
    <li><input type="radio"> Category 5</li>
</ul>

Je ne veux pas vraiment jouer avec les fichiers de base et me suis demandé si quelqu'un connaissait un moyen de remplacer la sortie via les fonctions de thème ou une autre méthode.

4
George

Je suis sûr que vous pouvez utiliser JavaScript pour le faire très simplement. J'essaierais ceci:

function convert_root_cats_to_radio()
{
    global $post_type;

    if ( 'post' != $post_type )
        return;
    ?>
    <script type="text/javascript">
    jQuery("#categorychecklist>li>label input").each(function(){
        this.type = 'radio';
    });
    </script>
    <?php
}
add_action( 'admin_footer-post.php', 'convert_root_cats_to_radio' );
add_action( 'admin_footer-post-new.php', 'convert_root_cats_to_radio' );

Cela permet de parcourir la hiérarchie et de convertir les éléments de niveau supérieur en boutons radio. Si vous devez strictement appliquer cela, le javascript ne sera pas une bonne solution car les catégories de niveau racine peuvent toujours être sélectionnées sous l'onglet populaire.

Découvrez également ce plugin pour conserver la hiérarchie après avoir sauvegardé: http://wordpress.org/extend/plugins/category-checklist-tree/

Si vous avez besoin de quelque chose d'un peu plus exécutable, vous aurez besoin d'un plugin personnalisé pour cela. Le plugin mentionné ci-dessus serait un excellent endroit pour commencer dans cette entreprise!

A bientôt ~

1
Matthew Boynes

Si la fonction utilise un type de marcheur, remplacez-le par une classe enfant étendue du marcheur.

Si vous faites cela, vous pouvez contrôler la manière dont la classe enfant fera écho au code HTML. Vous pouvez le personnaliser comme vous le souhaitez.

0
uwiuw