web-dev-qa-db-fra.com

Supprimer l'édition rapide pour le type d'article personnalisé

Est-il possible de supprimer la fonction d'édition rapide pour un type de publication personnalisé?

J'ai 14 taxonomies personnalisées avec des centaines de termes dans chacune et il faut trop de temps et de ressources pour les charger toutes dans le code source de la page.

J'ai essayé de trouver une solution à l'aide de Google mais la plupart d'entre eux ne font que masquer le bouton d'édition rapide, mais le code est chargé dans le pied de page par wordpress, de sorte que cela ne fait vraiment aucune différence.

2
passatgt

Consultez la page actions builk dans le codex. Je crois que l'action appropriée à annuler est inline. Cela supprimera l'action en bloc "Modifier", qui est en fait une édition rapide.

<?php
    function remove_bulk_actions( $actions ){
        unset( $actions['inline'] );
        return $actions;
    }
    add_filter('bulk_actions-custom_post_type_slug','remove_bulk_actions');
?>

En ce qui concerne l'édition rapide dans chaque ligne, recherchez manage _ {$ post_type} _columns , car vous pourrez peut-être remplacer la colonne Titre par la vôtre et la restituer à votre guise. Il n’existe actuellement aucun filtre permettant de supprimer l’édition rapide dans le WP Tableau de liste de messages , donc si le remplacement de la colonne ne fonctionne pas, vous devrez créer votre propre WP extension de la table de liste (excellent tutoriel).

4
Eric Holmes

Pour clarifier le message d'Eric, le code add_filter doit avoir la valeur screenid avant le slug de type de message personnalisé. Le plus commun étant bulk_actions-edit-custom_post_type_slug.

De plus, unset( $actions['inline'] ) ne semble pas être une option.

unset( $actions['edit'] ) et unset( $actions['trash'] ) étaient tout ce que je pouvais trouver.

Enfin, ce code supprime les éléments du menu déroulant des options en bloc, il ne pas supprime l'option "Édition rapide" qui apparaît lors du survol d'une publication.

function ssp_remove_member_bulk_actions( $actions ){
     unset( $actions['edit'] );
     return $actions;
}
add_filter('bulk_actions-edit-member','ssp_remove_member_bulk_actions');

CE CODE supprime l'édition rapide (merci à jfacemyer)

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

Vous pouvez également désactiver:

  1. edit = unset($actions['edit']);
  2. corbeille = unset($actions['trash']);
  3. view = unset($actions['view']);

Pour tout supprimer des options de survol de modification rapide:

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

Enfin, vous pouvez uniquement supprimer des actions basées sur un type de publication personnalisé, ou même des fonctionnalités utilisateur:

// Based on Post Type
if ($post->post_type=='myposttype') {
    unset($actions['edit']);
}
// Based on User Capability
if ( current_user_can('manage_options') ) {
   unset($actions['edit']);
}

La réponse acceptée modifie éditer en bloc liste déroulante, pas publier des lignes .

Le filtre que vous recherchez est au wp-admin/includes/class-wp-posts-list-table.php, ligne 1342 (WordPress 5.0.2):

/**
 * Filters the array of row action links on the Posts list table.
 *
 * The filter is evaluated only for non-hierarchical post types.
 *
 * @since 2.8.0
 *
 * @param array $actions An array of row action links. Defaults are
 *                         'Edit', 'Quick Edit', 'Restore', 'Trash',
 *                         'Delete Permanently', 'Preview', and 'View'.
 * @param WP_Post $post The post object.
 */
$actions = apply_filters( 'post_row_actions', $actions, $post );

Cela fonctionnera:

/**
 * This filter modifies "my_post_type" post rows,
 * such as "Edit", "Quick Edit" and "Trash".
 *
 * @param $actions
 * @param $post
 *
 * @return mixed
 */
add_filter('post_row_actions', function($action, $post) {
    if ($post->post_type == 'my_post_type') {
        // Remove "Quick Edit"
        unset($actions['inline hide-if-no-js']);
    }
    return $actions;
});
0
Lucas Bustamante