有条件地隐藏定价;需要从标签/自定义分类中可见


  1. 隐藏产品定价并添加到购物车按钮,除非登录
  2. 如果从某种标签、类别或其他分类法访问,销售项目是可见的,无论是否登录,因此除非明确指向销售,否则没有人看到销售。
    • 示例:所有商品价格都是隐藏的,但带有"华夫饼促销"标签的网址除外。这是一个简单的例子,但我认为这解释了我对 2 的追求。

我已经完成了 1. 用一个插件,最近还有一个短代码; 这很好用:

add_action( 'init', 'bbloomer_hide_price_add_cart_not_logged_in' );
function bbloomer_hide_price_add_cart_not_logged_in() {   
if ( ! is_user_logged_in() ) {      
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );   
add_action( 'woocommerce_single_product_summary', 'bbloomer_print_login_to_see', 31 );
add_action( 'woocommerce_after_shop_loop_item', 'bbloomer_print_login_to_see', 11 );
}
}
function bbloomer_print_login_to_see() {
echo '<a href="' . get_permalink(wc_get_page_id('myaccount')) . '">' . __('Please login for pricing.', 'theme_name') . '</a>';
}

但这给我留下了两个,这是有条件地使事情可见。如果这含糊不清,我很抱歉。我已经在网上搜索了答案,但我没有找到答案。我觉得我的词汇量阻碍了我;我不知道我所描述的钩子或短语的单词。我很想停止重新发明轮子(我不得不克隆产品/产品类别,使其仅从临时发布的销售页面中可见(。

谁能指出我正确的方向?以这种方式控制产品可见性是否可行?我将非常感谢任何人更有经验的两分钱或解决方案。谢谢。

你可以试试这个(没有测试过(,匆忙写它,但它应该可以帮助你实现你需要的东西。

您需要定义查询字符串,然后根据需要根据该查询字符串添加/删除操作。

使用以下get_query_string:

// register query var
add_action('init','register_query_string');
function register_query_string() { 
global $wp; 
$wp->add_query_var('my_query_string_name'); 
}
//check if it's in the url
if ( get_query_var('my_query_string_name') ) {
// remove/add actions for the query string
elseif ( !user_not_logged_in()){
//something when not logged in 
}
}

如果您需要检查查询字符串并登录,您可以执行以下操作:

if ( !get_query_var('my_query_string_name') && ( !user_not_logged_in()){
// insert magic here
}

代码进入函数.php从您的子主题(或插件(进入函数。

最新更新