web-dev-qa-db-fra.com

Comment désactiver/masquer la page de produit unique de woocommerce?

J'essaie de masquer la page de détail d'un seul produit sur mon site wordpress-woocommerce. Comment puis-je y parvenir sans casser les fonctionnalités de woocommerce?

5
wonder

Le mettre dans functions.php

//Removes links
add_filter( 'woocommerce_product_is_visible','product_invisible');
function product_invisible(){
    return false;
}

//Remove single page
add_filter( 'woocommerce_register_post_type_product','hide_product_page',12,1);
function hide_product_page($args){
    $args["publicly_queryable"]=false;
    $args["public"]=false;
    return $args;
}
9
Vitaly Gritsienko

Vous pouvez supprimer l'ancre générée sur la page de magasin, ce qui ne redirigerait jamais l'utilisateur vers une seule page. Pour cela, vous devez coller ce code dans votre fichier functions.php.

remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );

Ce code supprimera le lien mais, après cela, vous devrez également supprimer la balise de fermeture d'ancrage, mais cela ne cassera pas votre code HTML.

remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );
9
Ibad Shah

Vous pouvez enregistrer un hook renvoyant 404 dans le cas de pages de produit à l'aide de la fonction d'assistance is_product().

function prevent_access_to_product_page(){
    global $post;
    if ( is_product() ) {
        global $wp_query;
        $wp_query->set_404();
        status_header(404);
    }
}

add_action('wp','prevent_access_to_product_page');

La solution est testée et fonctionne.

Remarque: la solution reposait en quelque sorte sur certaines informations de la réponse de @ ale.

2
MhdSyrwan

La page unique est quelque chose qui est fourni par WordPress et il n’ya aucun moyen de la désactiver. Mais il existe des moyens d'empêcher l'accès à une page de produit unique. 

La première consiste à éditer votre modèle de boutique (produits-archive) et à supprimer tous les endroits où vous avez un lien vers une seule page. 

La seconde consiste à vérifier chaque chargement de page si la page est une page de produit unique et à rediriger l'utilisateur vers l'endroit où vous le souhaitez:

add_action('init','prevent_access_to_product_page');
function prevent_access_to_product_page(){
    if ( is_product() ) {
        wp_redirect( site_url() );//will redirect to home page
    }
}

Vous pouvez inclure ce code dans votre fichier functions.php de votre répertoire child-themes. N'oubliez pas que je n'ai pas testé le code.

1
Ale