2015-04-27 7 views
0

Я хочу показать цену зарегистрированным пользователям. Я написал отдельный плагин, так как мой код будет удален при обновлении.woocommerce показать цену только зарегистрированным пользователям

Ниже приведен код, он работает, но проблема в том, что он не отображает текст с гиперссылкой.

Я вижу только "Зарегистрированные пользователи могут просматривать цены". нет 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

Я не уверен, что это сработает или нет. Но, глядя на ваш код, я заметил, что вы не помещали пробел между «.». по вашему возвращению.

попробовать этот

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

не работает ........ – mydeve

0

Функция get_permalink() возвращает URI для вашего сообщения, но вам нужно фактически отринуть этот URI, открыв теги php внутри HTML.

Попробуйте

return 'Only <a href="<?php echo get_permalink(woocommerce_get_page_id('myaccount')) ; ?>">Registered Users</a> are able to view pricing.'; 
+0

теперь синтаксическая ошибка – mydeve

+0

Это неправильный ответ, вся функция находится в пределах не в HTML. –

+0

Приношу свои извинения всем, кто прочитал мой неправильный ответ. Я php newb, который нашел этот сайт полезным и хотел начать вносить свой вклад. @robin vinzenz, спасибо, что указал на мою ошибку. Я допустил ошибку, не проверяя свой ответ перед отправкой. Не сделаю этого еще раз ... – yo0onla

0

Я не проверял код в моем ответе, но я бы сказал, что вы не должны использовать woocommerce_get_page_id, так как это deprecated.

Вместо этого используйте функцию wc_get_page_idreference 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.'; 
    }   
} 

Или попробуйте другой Example в WooCommerce документации.

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

Сообщите, если это сработало для вас, удачи.

Смежные вопросы