it-swarm.com.de

Entfernen Sie die Schnellbearbeitung für benutzerdefinierte Beitragstypen

Ist es möglich, die Schnellbearbeitungsfunktion für einen benutzerdefinierten Beitragstyp zu entfernen?

Ich habe 14 benutzerdefinierte Taxonomien mit jeweils Hunderten von Begriffen und es kostet zu viel Zeit und Ressourcen, um sie alle in den Quellcode der Seite zu laden.

Ich habe versucht, eine Lösung mit Google zu finden, aber die meisten von ihnen verbergen nur die Schnellbearbeitungsschaltfläche, aber der Code wird von WordPress in die Fußzeile geladen, so dass es eigentlich keinen Unterschied macht.

2
passatgt

Schauen Sie sich die Seite Aktionen erstellen im Codex an. Ich glaube, die richtige Aktion zum Deaktivieren ist Inline. Dadurch wird die Massenaktion "Bearbeiten" entfernt, bei der es sich tatsächlich um eine Schnellbearbeitung handelt.

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

Bezüglich der Schnellbearbeitung in jeder Zeile schauen Sie in manage _ {$ post_type} _columns , da Sie möglicherweise die Title-Spalte durch Ihre eigene ersetzen und rendern können, wie Sie es wünschen. Momentan gibt es keine Filter zum Entfernen der Schnellbearbeitung in der WP Posts List Table . Wenn das Ersetzen der Spalte nicht funktioniert, müssen Sie Ihre eigene WP list table extension (Tolles Tutorial).

4
Eric Holmes

Zur Verdeutlichung von Eric's Beitrag muss der add_filter-Code die screenid vor dem benutzerdefinierten Beitragstyp slug haben. Das häufigste ist bulk_actions-edit-custom_post_type_slug.

Außerdem scheint unset( $actions['inline'] ) keine Option zu sein.

Sowohl unset( $actions['edit'] ) als auch unset( $actions['trash'] ) waren alles, was ich finden konnte.

Schließlich entfernt dieser Code die Drop-Menü-Elemente für Massenoptionen. Er entfernt nicht die Option "Schnellbearbeitung", die beim Bewegen des Mauszeigers über einen Beitrag angezeigt wird.

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

DIESER CODE entfernt Quick Edit (dank 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);

Sie können auch ausschalten:

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

So entfernen Sie alles aus den Quick Edit-Hover-Optionen:

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);

Schließlich können Sie nur Aktionen entfernen, die auf einem benutzerdefinierten Beitragstyp oder sogar auf Benutzerfunktionen basieren:

// 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']);
}

Die akzeptierte Antwort ändert Bulk-Bearbeitung Dropdown, nicht Zeilen posten .

Der gesuchte Filter befindet sich in wp-admin/includes/class-wp-posts-list-table.php, Zeile 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 );

Das wird funktionieren:

/**
 * 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