web-dev-qa-db-fra.com

Supprimer le lien de produit en double des actions de ligne de page WooCommerce

J'essaie désespérément de supprimer le lien en double de la liste de produits WooCommerce Admin (page_row_actions).

//Remove duplicate button from product list
    function my_duplicate_post_link($actions, $post) {
      $product = get_product( $post->ID );
        //if( $product->is_type( 'booking' ) ){
        //unset($actions['edit']);
        unset($actions['admin_action_duplicate_product']);
        unset($actions['dupe_link']);
        unset($actions['dupe_links']);
        unset($actions['duplicate']);
        unset($actions['duplicate_product']);
        unset($actions['duplicate_product_action']);
        return $actions;
        //}
    }
    add_filter('post_row_actions', 'my_duplicate_post_link', 10, 1);
    add_filter('page_row_actions', 'my_duplicate_post_link', 10, 1);

Je ne sais pas quoi d'essayer mais je ne peux pas m'en débarrasser :(

Merci

1
Daniel Klose

Quickie

Exécutez uniquementlorsquevous devez exécuter et exécutez uniquementvous devez exécuter

Votre code est presque là, mais vous n’exécutez pas à ce moment précis. Si nous utilisons votre code, il s’exécute puis est filtré à nouveau par WooCommerce. Nous avons donc deux options.

  1. Changer la priorité du filtre
  2. Raccroche le code pour qu'il fonctionne correctement

Je pense que le simple fait de décocher $actions['duplicate'] devrait fonctionner, je ne sais pas pourquoi vous avez également d'autres variables (faites-moi savoir si vous avez un but).

Changer la priorité du filtre

function my_duplicate_post_link($actions, $post) {

    // The following checks WHERE we should run if not products just return
    if ( $post->post_type != 'product' ) {
        return $actions;
    }

    $product = get_product( $post->ID );
    unset($actions['duplicate']);
    return $actions;
}

// Notice priority changed from default 10 to 15(anything greater than 10)
// Priority defines WHEN we should run
add_filter('post_row_actions', 'my_duplicate_post_link', 15, 2);
add_filter('page_row_actions', 'my_duplicate_post_link', 15, 2);

Accrochez le code à init

add_action('init','wpse_227130_hook_properly');

function wpse_227130_hook_properly() {
    add_filter('post_row_actions', 'my_duplicate_post_link', 10, 2);
    add_filter('page_row_actions', 'my_duplicate_post_link', 10, 2);
}

Rappelez-vousinitaction s'exécute après le chargement de tous les plugins et le meilleur emplacement pour exécuter du code.

1
bravokeyl