woocommerce只显示注册用户的价格

时间:2015-04-27 23:32:57

标签: php wordpress

我想仅向注册用户显示价格。我写了一个单独的插件,因为我的代码将在更新时删除。

下面是代码,它正在运行,但问题是它没有显示带有超链接的文本。

我只看到“注册用户能够查看定价”。 没有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.';
    }    
}

3 个答案:

答案 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.';
    }        
}

请告诉你这是否对你有用,祝你好运。