web-dev-qa-db-fra.com

Désactiver inline_edit () sur edit.php

Dans la classe WP_Posts_List_Table, il existe une fonction nommée inline_edit() qui se charge de restituer l'intégralité de la table d'édition rapide utilisée (mais initialement masquée) sur wp-admin/edit.php.

Je souhaite empêcher le rendu de cette table car le site sur lequel je travaille contient des milliers de termes de catégorie et ils sont tous ajoutés à cette table d'édition rapide. comme éléments de liste avec des cases à cocher. Cela rend edit.php un chargement énorme et lent (et dans certains cas, avec certains plugins jQuery, certains navigateurs bloquent même).

Je n'ai trouvé aucun moyen, avec des filtres ou des actions dans WP_Posts_List_Table, d'empêcher le rendu de cette table. Ni aucun moyen de faire edit.php pas appeler $wp_list_table->inline_edit(); à la fin. Existe-t-il un moyen (approprié) d'atteindre mon objectif? Sans piratage de base, bien sûr.

(Je sais comment désactiver le lien de modification rapide dans les lignes de publication avec le filtre post_row_actions mais cette table volumineuse est toujours restituée et envoyée avec edit.php.)

1
Adrian B

Je n'ai jamais été capable de trouver un filtre non plus, mais il existe une vérification permettant de déterminer si la taxonomie est autorisée à afficher son interface utilisateur. Donc, dans un de mes plugins, je modifiais la variable globale $wp_taxonomies sur la page d'édition.

/**
 * Disable the UI for categories, but only on EDIT screen
 * which prevents them from appearing in quick edit
 */
add_action( 'load-edit.php', 'wpa_130501_disable_ui' );

function wpa_130501_disable_ui(){
    global $wp_taxonomies;
    $wp_taxonomies['category']->show_ui = FALSE;
}

La section d'édition rapide a besoin de beaucoup d'amour dans une future mise à jour.

1
helgatheviking

Ayant eu le même problème pendant un certain temps, je l'ai résolu en modifiant le term_list avec un filtre afin de supprimer toutes les cases à cocher lorsque je suis sur la page edit.php. Tout d'abord, vous pouvez supprimer le lien avec ceci:

    function remove_quick_edit( $actions ) {
        unset($actions['inline hide-if-no-js']);
        return $actions;
    }
    add_filter('post_row_actions','remove_quick_edit',10,1);

Cela ne fera que supprimer le lien, mais le sélecteur de catégorie actuel est toujours dans le code source ...

    add_filter('wp_terms_checklist_args', 'remove_terms_from_list', '', 2);
    function remove_terms_from_list( $args, $post_id){
        global $pagenow, $typenow;
        if ($pagenow == 'edit.php' && $typenow == 'post-type-name' || $pagenow == 'nav-menus.php') {
            $args['walker'] = new wiki_remove_tax_quickedit;
            $args['taxonomy'] = ' ';
        }
        return $args;
    }

    class wiki_remove_tax_quickedit extends Walker {
        var $tree_type = 'category';
        var $db_fields = array ('parent' => 'parent', 'id' => 'term_id');

        function start_lvl( &$output, $depth = 0, $args = array() ) {
                $indent = str_repeat("\t", $depth);
                $output .= "$indent<ul class='children'>\n";
        }

        function end_lvl( &$output, $depth = 0, $args = array() ) {
                $indent = str_repeat("\t", $depth);
                $output .= "$indent</ul>\n";
        }

        function start_el( &$output, $category, $depth, $args, $id = 0 ) {

        }
    }

(changez le post-type-name en votre type de post)

0
passatgt