我想仅向注册用户显示价格。我写了一个单独的插件,因为我的代码将在更新时删除。
下面是代码,它正在运行,但问题是它没有显示带有超链接的文本。
我只看到“注册用户能够查看定价”。 没有href到帐户页面。
add_filter('woocommerce_get_price_html','members_only_price');
function members_only_price($price) {
if(is_user_logged_in()){
return $price;
}
else {
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
return 'Only <a href="' .get_permalink(woocommerce_get_page_id('myaccount')). '">Registered Users</a> are able to view pricing.';
}
}
答案 0 :(得分:0)
我不确定它是否会起作用。但是看着你的代码,我注意到你并没有在&#34;。&#34;之间留出空间。在你回来。
试试这个
function members_only_price($price){
if(is_user_logged_in()) {
return $price;
}
else {
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
return 'Only <a href="' . get_permalink(woocommerce_get_page_id('myaccount')) . '">Registered Users</a> are able to view pricing.';
}
}
注意:未经过测试。
答案 1 :(得分:0)
get_permalink()函数返回帖子的URI,但你需要通过在HTML中打开php标签来实际回显该URI。
试试这个
return 'Only <a href="<?php echo get_permalink(woocommerce_get_page_id('myaccount')) ; ?>">Registered Users</a> are able to view pricing.';
答案 2 :(得分:0)
我没有在我的回答中测试代码,但我宁愿说你不应该使用woocommerce_get_page_id
,因为它是deprecated。
而是使用函数wc_get_page_id
reference to docs。
add_filter('woocommerce_get_price_html','members_only_price');
function members_only_price($price) {
if(is_user_logged_in()){
return $price;
}
else {
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
return 'Only <a href="'.get_permalink( wc_get_page_id( 'myaccount' ) ). '">Registered Users</a> are able to view pricing.';
}
}
或者在woocommerce文档中尝试其他Example。
add_filter('woocommerce_get_price_html','members_only_price');
function members_only_price($price) {
if(is_user_logged_in()){
return $price;
}
else {
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
return 'Only <a href="'.get_permalink( get_option('woocommerce_myaccount_page_id') ). '">Registered Users</a> are able to view pricing.';
}
}
请告诉你这是否对你有用,祝你好运。