web-dev-qa-db-fra.com

Supprimer la sélection "parent" lors de l'ajout/la modification de catégories?

J'ai essayé de trouver un moyen de masquer/désactiver le menu déroulant Parent à partir de l'écran Messages -> Catégories.
http://example.com/wp-admin/edit-tags.php?taxonomy=category

J'ai pu cacher l'option "Slug" à travers cette fonction ici:

// Admin - Global Terms Enabled
function disable_global_terms($enablefalse) {
   return 1;
}
add_filter( 'global_terms_enabled', 'disable_global_terms' );

Est-il possible de faire de même pour le menu déroulant des parents sans supprimer ce code des fichiers principaux WP, de sorte que je devrais le faire chaque fois à chaque mise à jour?

2
Roc

Si vous supprimez du code des fichiers WordPress principaux , cela signifie que vous connaissez un tas de fichiers PHP, il est donc temps d’apprendre à faire les choses sans toucher à fichiers de base .

Note latérale sur le crochet présenté dans la question:
le filtre global_terms_enabled ne fonctionne que pour le multisite (/wp-includes/functions.php, ligne 3006).

Dans de nombreux cas, il n'y a pas de points d'ancrage pour modifier l'interface administrative. La modification doit donc être effectuée avec CSS ou jQuery.
La solution ci-dessous montre comment imprimer des scripts sur un écran spécifique (edit-tags.php) du admin_head-SCREEN-ID.php. Là, de nombreux contrôles peuvent être effectués, dans ce cas, les paramètres d'URL.

add_action( 'admin_head-edit-tags.php', 'wpse_58799_remove_parent_category' );

function wpse_58799_remove_parent_category()
{
    // don't run in the Tags screen
    if ( 'category' != $_GET['taxonomy'] )
        return;

    // Screenshot_1 = New Category
    // http://example.com/wp-admin/edit-tags.php?taxonomy=category
    $parent = 'parent()';

    // Screenshot_2 = Edit Category
    // http://example.com/wp-admin/edit-tags.php?action=edit&taxonomy=category&tag_ID=17&post_type=post
    if ( isset( $_GET['action'] ) )
        $parent = 'parent().parent()';

    ?>
        <script type="text/javascript">
            jQuery(document).ready(function($)
            {     
                $('label[for=parent]').<?php echo $parent; ?>.remove();       
            });
        </script>
    <?php
}

Screenshot_1

Screenshot_1


Screenshot_2

enter image description here

8
brasofilo