programing

단일 제품 페이지를 비활성화/숨기는 방법

abcjava 2023. 3. 22. 20:33
반응형

단일 제품 페이지를 비활성화/숨기는 방법

wordpress-woocommerce 사이트에서 단일 상품 상세 페이지를 숨기려고 합니다.어떻게 하면 Woocommerce 기능을 중단하지 않고 이 작업을 수행할 수 있을까요?

숍 페이지에서 생성된 앵커는 삭제할 수 있습니다.이 앵커는 사용자를 한 페이지로 리다이렉트하지 않습니다.그러기 위해서는 이 코드를 함수에 붙여 넣어야 합니다.php 파일.

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

이 코드는 링크를 삭제하지만, 그 후 앵커 클로징 태그를 삭제해야 합니다.또한 HTML이 깨지지 않습니다.

remove_action(
  'woocommerce_after_shop_loop_item',
  'woocommerce_template_loop_product_link_close',
  5
);

기능에 넣으세요.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;
}

제품 페이지의 경우 404를 반환하는 후크는 다음을 사용하여 등록할 수 있습니다.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');

솔루션은 테스트되어 동작하고 있습니다.

주의: 솔루션은 @ale의 답변에 근거한 것입니다.

단일 페이지는 WordPress에서 제공되는 것으로 비활성화할 방법이 없습니다.그러나 단일 제품 페이지에 대한 액세스를 방지하는 몇 가지 방법이 있습니다.

첫 번째 방법은 상점(제품 보관) 템플릿을 편집하고 단일 페이지에 대한 링크가 있는 모든 위치를 삭제하는 것입니다.

두 번째 방법은 페이지가 단일 제품 페이지인 경우 각 페이지 로드를 확인하고 원하는 위치로 사용자를 리디렉션하는 것입니다.

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

이 코드를 함수에 포함할 수 있습니다.php 파일.코드를 테스트하지 않았습니다.

대부분의 경우 제품 페이지 링크를 클릭할 수 없도록 하면 제품 페이지로 이동하는 것이 사실상 "비활성화"됩니다.CSS(테마별로 클래스 조정)를 사용하여 실행할 수 있습니다.

.product-title a,
.product-container a,
.product-details a {
    pointer-events: none;
}

메모: 페이지 자체는 삭제되지 않지만 클릭을 비활성화하여 페이지로 이동합니다.직접 링크를 통한 페이지 액세스를 비활성화하려면 제공된 리디렉션 솔루션 중 일부를 사용하십시오.

오래된 질문이지만 어떤 대답도 나에게는 통하지 않았다.

이것은 에일과 음드시완의 것을 개작한 것입니다.

add_action('wp','prevent_access_to_product_page');
function prevent_access_to_product_page(){
  if ( is_product() ) {
    wp_redirect( get_permalink( 269 ) );
  }
}

사용하는 것이 좋을지도 모릅니다.template_redirect액션:

function redirect_if_single_product()
{
    if (is_product()) {
        wp_safe_redirect(esc_url(home_url()));
        exit();
    }
}
add_action('template_redirect', 'redirect_if_single_product');

언급URL : https://stackoverflow.com/questions/44197739/how-to-disable-hide-woocommerce-single-product-page

반응형