Shop-Seite auf Woocommerce deaktivieren, um Kategorien zu schützen

Lesezeit: 4 Minuten

Benutzer-Avatar
chiliiii

Ich versuche, die Seite “Shop” in Woocommerce zu deaktivieren. Grundsätzlich erstelle ich ein Shop-Thema, um Drucke und Bilddownloads für einen Fotografen zu verkaufen.

Da ich private Galerien erstellen muss, habe ich einen benutzerdefinierten Beitragstyp erstellt, bei dem ich den Woocommerce-Kategorie-Shortcode verwende, um Produkte anzuzeigen, und dann den Beitragstyp mit einem Passwort schütze.

Dies ist eine Problemumgehung für den Passwortschutz der Woocommerce-Kategorien (wenn jemand eine bessere kennt, bitte erklären).

Das Problem ist, dass jemand, der zu /shop geht, alle Produkte bekommt, einschließlich der “geschützten”. Also muss ich die Shop-Seite deaktivieren und ich muss es programmgesteuert für meine Themenfunktionen tun. Irgendwelche Gedanken?

Benutzer-Avatar
Solomon Closon

Um die Shop-Seite zu deaktivieren, kopieren Sie die archive-product.php Datei aus der /wp-content/plugins/woocommerce/templates/archive-product.php und einlegen /wp-content/themes/{Your Theme}/woocommerce/archive-product.php

Öffnen Sie die Datei und überschreiben Sie alles in der Datei mit dem folgenden Code:

<?php
global $wp_query;

$wp_query->set_404();
status_header(404);

get_template_part('404');

Speichern Sie die Datei, und jetzt ist Ihre Shop-Seite verschwunden und durch eine 404-Seite ersetzt!

  • Brillante Antwort.

    – bigdaveygeorge

    26. August 2016 um 10:56 Uhr

  • Dies sollte die akzeptierte Antwort sein, da das Aktualisieren der WooCommerce-Shopseitenoption allein den Zugriff auf die Shopseite nicht blockiert

    – Will Craig

    18. Januar 2017 um 0:18 Uhr

  • Ich würde zustimmen, dass dies unter den gegebenen Umständen der richtige Weg ist (persönlich verwende ich einen Straight wp_redirect(site_url(), '301') in archive-product.php); Es ist jedoch ziemlich lächerlich, eine Kopie der Vorlage erstellen und dann eine Art Header-Handling implementieren zu müssen, nachdem Sie die Seite gelöscht und die WC-Option entfernt haben. Sollte es unbedingt geben wenigstens ein Haken dafür, anstatt WC vorausgesetzt dass es Ihre Site-Konfiguration unabhängig von Ihren Einstellungen und Seiten rücksichtslos umgehen kann.

    – indexzwei

    31. März 2017 um 16:14 Uhr


  • @indextwo – Kann nicht mehr zustimmen!

    – Solomon Closon

    31. März 2017 um 16:26 Uhr

  • Oder verwenden Sie ein Umleitungs-WordPress-Plugin. Es vermeidet das Bearbeiten von Vorlagen und bringt sie auf die Seite mit den Produkten, die sie sehen sollen.

    – David Koch

    7. August 2018 um 15:02 Uhr

Fügen Sie dies zu den Funktionen hinzu:

function woocommerce_disable_shop_page() {
    global $post;
    if (is_shop()):
    global $wp_query;
    $wp_query->set_404();
    status_header(404);
    endif;
}
add_action( 'wp', 'woocommerce_disable_shop_page' );

Dokumente: Dokumentation zu bedingten WooCommerce-Funktionen

  • Ich habe dies mit der Weiterleitung in den obigen Kommentaren kombiniert, funktioniert großartig

    Benutzer3412695

    20. Juni 2017 um 19:30 Uhr

  • hallo, kannst du auch verwenden is_woocommerce() Woocommerce-Seite vollständig zu deaktivieren, denn wenn Sie verwenden is_shop()der Benutzer kann immer noch über die Produktseite oder den Warenkorb oder die Produktkategorie zugreifen, Sie können die Referenz hier sehen: docs.woocommerce.com/wc-apidocs/…

    – Anthony Kal

    31. August 2018 um 7:00 Uhr


WooCommerce hat einen Filter für das Array, das zum Erstellen des Produkt-Beitragstyps verwendet wird: woocommerce_register_post_type_product.

Anstatt die Archivvorlage zu ändern, um eine Umleitung zu erzwingen, können Sie das Archiv des Beitragstyps vollständig entfernen, aber die has_archive Attribut für den Beitragstyp bei der Erstellung.

add_filter('woocommerce_register_post_type_product', function($post_type) {
    $post_type['has_archive'] = false;
    return $post_type;
});

Anschließend sollten Sie die Shop-Seite im CMS entfernen, indem Sie auf gehen WooCommerce » Einstellungen » Produkt » Anzeigeund klicken Sie auf das „x“ in der Option „Shop-Seite“.

Möglicherweise müssen Sie den Permalink-Cache leeren, was Sie tun können, indem Sie einfach auf die Schaltfläche „Aktualisieren“ klicken Einstellungen » Permalinks.

Benutzer-Avatar
David Hobs

*Bearbeiten – Anscheinend funktioniert die von mir unten vorgeschlagene Seiteneinstellung nicht mehr. Wenn WooCommerce keine Plugin-Einstellung hat, um es zu ändern, würde ich persönlich ein WordPress-Weiterleitungs-Plugin wie verwenden Umleitung. Auf diese Weise können Sie sie automatisch von der unerwünschten Shop-Seite auf die Seite umleiten, auf der Ihre Produkte angezeigt werden. Es vermeidet ein 404-Problem und hält alles intakt. Es vermeidet auch das Bearbeiten von Vorlagendateien, was für Nicht-Entwickler zu Komplikationen führt.


Alte Antwort:

Hast du die Woo-Einstellungen ausprobiert?

Admin-Bereich, linkes Hauptmenü, Woocommerce > Einstellungen Klicken Sie auf die Registerkarte Seiten.

Unter Seiteneinrichtung ist “Shop-Basisseite”, im Dropdown-Menü befindet sich rechts rechts ein kleines “x”. Klicken Sie darauf, um die Seite loszuwerden.

Wenn es an anderer Stelle Links gibt, die repariert werden müssen, lassen Sie es mich wissen und ich werde die Hooks/Filter finden, um das Problem zu beheben.

template_redirect ist der letzte Hook vor dem Rendern der Seite. In meinem Anwendungsfall frage ich also, ob die angezeigte Seite die “Shop” -Seite ist, und ob ich (in meinem Fall) auf eine Preisseite umleite.

function my__template_redirect(){
    if(is_shop()){
        wp_redirect(site_url() . '/pricing/', '302');
    }
}
add_action('template_redirect', 'my__template_redirect');

Benutzer-Avatar
Dudikowski

Der letzte Vorschlag hat bei mir mit WP 4.6.1 und WooCommerce 2.6.4 nicht funktioniert. Das Ausblenden von Produkten auf der Registerkarte „Veröffentlichen“ funktioniert bei mir.

http://paperhedge.com/hide-products-from-displaying-in-shop-page-woocommerce/

Benutzer-Avatar
Federico Schiocchet

Zu Deaktivieren Sie den Standardshop Seite und lass den /shop/ Slug frei Verwenden Sie für benutzerdefinierte Seiten Folgendes:

function remove_woocommerce_default_shop( $args, $post_type ) {
    if (class_exists('WooCommerce')) {
        if ( $post_type == "product" ) {
            $args['has_archive'] = true;
        }
        return $args;
    }
}
add_filter('register_post_type_args', 'remove_woocommerce_default_shop', 20, 2);

1385000cookie-checkShop-Seite auf Woocommerce deaktivieren, um Kategorien zu schützen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy