【发布时间】:2017-10-27 02:54:37
【问题描述】:
我试图在我的 wordpress-woocommerce 网站上隐藏单个产品详细信息页面。如何在不破坏 woocommerce 功能的情况下实现这一目标?
【问题讨论】:
标签: wordpress woocommerce
我试图在我的 wordpress-woocommerce 网站上隐藏单个产品详细信息页面。如何在不破坏 woocommerce 功能的情况下实现这一目标?
【问题讨论】:
标签: wordpress woocommerce
您可以删除商店页面上生成的锚点,该锚点永远不会将用户重定向到单个页面。为此,您必须将此代码粘贴到您的 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
);
【讨论】:
放到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;
}
【讨论】:
如果产品页面使用is_product()辅助函数,您可以注册一个返回404的钩子
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
}
}
您可以将此代码包含在您的子主题目录的functions.php 文件中。请记住,我还没有测试过代码。
【讨论】:
在大多数情况下,取消点击产品页面链接的可能性将有效地“禁用”进入产品页面。您可以使用 CSS(为您的主题调整类):
.product-title a,
.product-container a,
.product-details a {
pointer-events: none;
}
注意:这不会删除页面本身,但会禁止点击访问它。要禁用通过直接链接访问页面,请使用一些提供的重定向解决方案。
【讨论】:
老问题,但没有一个答案对我有用。
这是我的改编自 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 ) );
}
}
【讨论】: