WebHU - Programozási kérdések és válaszok

A kategóriák védelme érdekében tiltsa le a Shop oldalt a Woocommerce-en

Megpróbálom letiltani a „shop” oldalt a Woocommerce-ben. Alapvetően bolti témát készítek, hogy eladjak nyomatokat és képletöltéseket egy fotós számára.

Mivel privát galériákat kell létrehoznom, létrehoztam egy egyéni bejegyzéstípust, ahol a woocommerce kategória rövid kódját használom a termékek megjelenítéséhez, majd jelszóval védem a bejegyzés típusát.

Ez egy megoldás a woocommerce kategóriák jelszavas védelmére (ha valaki tud jobbat, kérem magyarázza el).

A probléma az, hogy ha valaki elmegy a /shopba, akkor az összes terméket megvásárolja, beleértve a "védetteket is". Tehát le kell tiltanom a bolt oldalát, és programozottan kell megtennem a témafunkcióimban. Bármi hozzáfűznivaló?

03.10.2012

Válaszok:



2

A bolt oldal letiltásához másolja át a archive-product.php fájlt a /wp-content/plugins/woocommerce/templates/archive-product.php mappából, és helyezze be a /wp-content/themes/{Your Theme}/woocommerce/archive-product.php

Nyissa meg a fájlt, és írjon felül mindent a fájlban az alábbi kóddal:

<?php
global $wp_query;

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

get_template_part('404');

Mentse el a fájlt, és a Shop oldala eltűnt, és a helyére egy 404-es oldal került!

16.03.2016
  • Zseniális válasz. 26.08.2016
  • Ez az elfogadott válasz, mivel a WooCommerce bolt oldalának frissítése önmagában nem blokkolja a hozzáférést az üzlet oldalához 18.01.2017
  • Egyetértek azzal, hogy a körülményekhez képest ez a módszer (én személy szerint wp_redirect(site_url(), '301') egyenest használok archive-product.php-ban); azonban az oldal törlése és a WC opció eltávolítása után elég nevetséges, hogy másolatot kell készíteni a sablonról, majd végre kell hajtani valamilyen fejléckezelést. Ehhez feltétlenül kell legalább egy horog, ahelyett, hogy a WC feltételezné, hogy az Ön beállításaitól és oldalaitól függetlenül átvészelheti a webhely konfigurációját. 31.03.2017
  • @indextwo - Nem tudnék jobban egyetérteni! 31.03.2017
  • Véleményem szerint ez nem jó megoldás, mert vannak olyan esetek, amikor a WooCommerce hivatkozásokat szúr be a Shop oldalra (például a kosárba, amikor az összes terméket eltávolítja), ami aztán egy 404-es oldalhoz vezet. 05.06.2018
  • Vagy használjon átirányító wordpress plugint. Ez elkerüli a sablonok szerkesztését, és arra az oldalra juttatja őket, amelyen a kívánt termékek vannak. 07.08.2018
  • @Dev – Az üzlet oldalára mutató hivatkozások mindegyike könnyen megváltoztatható akasztókkal és sablonokkal. 26.11.2019

  • 3

    Add hozzá a függvényekhez:

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

    Dokumentumok: WooCommerce feltételes függvények dokumentációja

    13.12.2016
  • Ezt az átirányítást kombináltam a fenti megjegyzésekben, remekül működik 20.06.2017
  • szia, a is_woocommerce() segítségével teljesen letilthatod a woocommerce oldalt, mert ha is_shop()-t használsz, a felhasználó továbbra is hozzáférhet a termékoldalon vagy a kosáron vagy a termékkategórián keresztül, a hivatkozást itt láthatod: docs.woocommerce.com/wc-apidocs/ 31.08.2018

  • 4

    A WooCommerce rendelkezik egy szűrővel a tömbhöz, amelyet a Termék bejegyzéstípus létrehozásához használ: woocommerce_register_post_type_product.

    Ahelyett, hogy megváltoztatná az archívum sablonját, hogy átirányításra kényszerítse, teljesen eltávolíthatja a bejegyzéstípus archívumát, de a bejegyzéstípus has_archive attribútuma létrehozáskor módosítja a bejegyzés típusát.

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

    Ezután távolítsa el a bolt oldalát a CMS-ből. Ehhez lépjen a WooCommerce » Beállítások » Termék » Megjelenítés menüpontra, és kattintson az „x” gombra a „Shop Page” opciónál.

    Előfordulhat, hogy ki kell ürítenie a permalink gyorsítótárat, amit egyszerűen a Beállítások » Permalinkek menü „Frissítés” gombjára kattintva tehet meg.

    05.09.2017

    5

    A template_redirect az utolsó horog az oldal megjelenítése előtt, ezért az én használati esetemben megkérdezem, hogy a megtekintett oldal a "shop" oldal-e, és ha az, akkor átirányítom (esetemben) egy árképzési oldalra.

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

    6

    Az utolsó javaslat nem működött számomra a WP 4.6.1 és a WooCommerce 2.6.4 esetén. A termékek elrejtése a Közzététel lapon működik számomra.

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

    17.09.2016

    7

    Pár (vagy talán több) dolgot össze kell kötnie:

    /* hide category from shop pages */
    add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
    function custom_pre_get_posts_query( $q ) {
    
        if ( ! $q->is_main_query() ) return;
        if ( ! $q->is_post_type_archive() ) return;
    
        if ( ! is_admin() ) {
            $q->set( 'tax_query', array(array(
                'taxonomy' => 'product_cat',
                'field' => 'slug',
                'terms' => array( YOUR-CATEGORY-SLUG, YOUR-CATEGORY-SLUG-2 ), // Don't display products in the knives category on the shop page
                'operator' => 'NOT IN'
            )));
    
        }
    
        remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
    
    }
    

    Változtassa meg, nyilvánvalóan YOUR-CATEGORY-SLUG, YOUR-CATEGORY-SLUG-2, hogy macskája vagy macskái elrejtőzzenek a boltok oldalairól.

    Akkor ezeket is el kell rejteni a menükből, igaz?:

    /* hide category from menues */
    add_filter( 'get_terms', 'get_subcategory_terms', 10, 3 );
    function get_subcategory_terms( $terms, $taxonomies, $args ) {
        $new_terms = array();
    
        // if category and on the shop page (change it with is_woocommerce() if want to hide from all woo pages)
        if ( in_array( 'product_cat', $taxonomies ) && ! is_admin() && is_shop() ) {
    
            foreach ( $terms as $key => $term ) {
              if ( ! in_array( $term->slug, array( YOUR-CATEGORY-SLUG, YOUR-CATEGORY-SLUG-2 ) ) ) {
                $new_terms[] = $term;
              }
    
        }
            $terms = $new_terms;
        }
      return $terms;
    }
    

    De nem hiszem, hogy ez 100%-ban megoldja a dolgot, azóta mi van a keresési eredményekkel?

    31.07.2013

    8

    Az alapértelmezett bolt oldal letiltásához és a /shop/ slug szabadon hagyásához az egyéni oldalakhoz használja a következőt:

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

    9

    Próbálja ki ezt

    1. Új oldal létrehozása "Shop" néven
    2. Lépjen a „woocommerce” > „Beállítások” > „Termék” > „Megjelenítés” lapra.
    3. Válassza ki a "Shop" nevű bolt oldalt, majd kattintson a Módosítások mentése gombra
    4. Vissza az "Oldalak"-ra, majd törölje a "Shop" oldalt (tartsa az oldalt a kukában, ne törölje végleg)

    Nekem ez a módszer jól működik

    29.07.2016
    Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..