我已经完成了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>';
}
但是,这使我剩下两个,这使得有条件地使事物可见。如果这含糊不清,我感到抱歉。我已经在网上搜寻了答案,但是很快就会发现。我觉得我的词汇量使我退缩;我不了解我所描述的勾子或短语。我很想停止重新发明轮子(我必须克隆产品/产品类别,才能使它们仅在临时发布的销售页面上可见)。
有人能指出我正确的方向吗?以这种方式控制产品可见性是否可行?我将不胜感激,如果有人对此有更丰富的经验,或者对此有解决方案,请联系我们。谢谢。
答案 0 :(得分:1)
您可以尝试使用此功能(未经测试),匆忙编写,但可以帮助您实现所需的功能。
您需要定义查询字符串,然后根据该查询字符串根据需要添加/删除操作。
// 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
}
代码从您的子主题(或插件)进入functions.php。