我想在我的wordpress-woocommerce网站上隐藏单个产品详情页面。如何在不破坏woocommerce功能的情况下实现这一目标?
答案 0 :(得分:10)
您可以删除在商店页面上生成的锚点,该锚点永远不会将用户重定向到单页面。为此,您必须将此代码粘贴到functions.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 );
答案 1 :(得分:9)
将它放在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;
}
答案 2 :(得分:3)
如果产品页面使用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的回答。
答案 3 :(得分:1)
单页是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
}
}
您可以将此代码包含在child-themes目录的functions.php文件中。请记住,我还没有测试过代码。
答案 4 :(得分:0)
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 );
答案 5 :(得分:0)
在大多数情况下,取消点击产品页面链接的可能性将有效地“禁止”进入产品页面。您可以使用 CSS 来实现(为您的主题调整类):
.product-title a,
.product-container a,
.product-details a {
pointer-events: none;
}
注意:这不会删除页面本身,但会禁止点击访问。要禁止通过直接链接访问页面,请使用一些提供的重定向解决方案。
答案 6 :(得分:0)
老问题,但没有一个答案对我有用。
这是我的改编自 Ale's 和 MhdSyrwan's 的
add_action('wp','prevent_access_to_product_page');
function prevent_access_to_product_page(){
if ( is_product() ) {
wp_redirect( get_permalink( 269 ) );
}
}