wake-up-neo.net

Wie kann ich die Woocommerce-Produktseite deaktivieren/ausblenden?

Ich versuche, die einzelne Produktdetailseite auf meiner WordPress-Woocommerce-Site zu verbergen. Wie kann ich dies erreichen, ohne die Woocommerce-Funktionalität zu beeinträchtigen?

5
wonder

Setze es in 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

Sie können den auf der Shopseite generierten Anker entfernen, der den Benutzer niemals auf eine einzelne Seite umleiten würde. Dazu müssen Sie diesen Code in Ihre Datei "functions.php" einfügen.

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

Dieser Code entfernt den Link, aber danach müssen Sie auch den Ankertag entfernen, der die HTML-Datei nicht beschädigt

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

Sie können einen Hook registrieren, der im Falle von Produktseiten den Wert 404 zurückgibt, indem Sie die is_product() Helper-Funktion verwenden

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

Die Lösung ist getestet und funktioniert.

Hinweis: Die Lösung basierte irgendwie auf Informationen aus der Antwort von @ Ale.

2
MhdSyrwan

Die einzelne Seite wird von WordPress bereitgestellt und kann nicht deaktiviert werden. Es gibt jedoch einige Möglichkeiten, den Zugriff auf eine einzelne Produktseite zu verhindern. 

Die erste ist, Ihre Shop-Vorlage (Produkt-Archiv) zu bearbeiten und alle Stellen zu löschen, an denen Sie einen Link zu der einzelnen Seite haben. 

Die zweite besteht darin, bei jedem Laden der Seite zu prüfen, ob es sich bei der Seite um eine einzelne Produktseite handelt, und den Benutzer dorthin zu leiten, wo Sie möchten:

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
    }
}

Sie können diesen Code in Ihre Datei "functions.php" des Verzeichnisses child-themes einfügen. Denken Sie daran, dass ich den Code noch nicht getestet habe.

1
Ale
remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );
0
Fotic