首先,我是初学者,不熟悉php,所以请原谅我的无知......! 我无法弄清楚如何正确创建一个短代码,允许我向已购买产品的客户展示内容,在他们的帖子中使用[CUSTOMER]内容[/ CUSTOMER]和[USER]其他内容[/ USER]其他人的内部帖子(尚未购买产品的人)。
我想使用woocommerce中包含的函数wc_paying_customer,如下所示:
function wc_paying_customer( $order_id ) {
$order = wc_get_order( $order_id );
if ( $order->user_id > 0 ) {
update_user_meta( $order->user_id, 'paying_customer', 1 );
$old_spent = absint( get_user_meta( $order->user_id, '_money_spent', true ) );
update_user_meta( $order->user_id, '_money_spent', $old_spent + $order->order_total );
$old_count = absint( get_user_meta( $order->user_id, '_order_count', true ) );
update_user_meta( $order->user_id, '_order_count', $old_count + 1 );
}
}
链接:http://docs.woothemes.com/wc-apidocs/function-wc_paying_customer.html和http://docs.woothemes.com/wc-apidocs/source-function-wc_paying_customer.html#192-212
所以我在我的函数php中添加了这个:
add_shortcode('CUSTOMER','check_customer');
function check_customer($atts,$content=""){
if (wc_paying_customer()){
return do_shortcode($content);
}
}
add_shortcode('USER','check_user');
function check_user($atts,$content=""){
if (!wc_paying_customer()){
return do_shortcode($content);
}
}
但它似乎不起作用,我不明白为什么(再次,我完全是新的 - 第一个stackoverflow问题 - 所以我可能犯了一个错误或忘记了一些东西,但我需要一些帮助来解决它)。
谢谢!
编辑:我使用了下面Diggy提供的答案,它的工作非常精彩。非常感谢 :) 如果其他人想要使用它,这里应该添加到自定义函数php文件中:function so27296867_is_paying_customer()
{
$user_id = get_current_user_id();
if( '' != get_user_meta( $user_id, 'paying_customer', true ) )
return true;
return false;
}
add_shortcode('CUSTOMER','check_customer');
function check_customer($atts,$content=""){
if( so27296867_is_paying_customer() ){
return do_shortcode($content);
}
}
add_shortcode('USER','check_user');
function check_user($atts,$content=""){
if( !so27296867_is_paying_customer() ){
return do_shortcode($content);
}
}
然后在您的页面内容中显示使用[CUSTOMER] [/ CUSTOMER]短代码和[USER] [/ USER]为其他人付费的客户的内容。我发现这是必要的,因为我允许人们在购买任何东西之前创建一个帐户,但需要他们购买产品以便在登录时访问其帐户内的其他部分。
再次感谢diggy提供如此出色的解决方案!
答案 0 :(得分:0)
您可以使用以下功能检查当前用户的paying_customer
用户元字段:
function so27296867_is_paying_customer()
{
$user_id = get_current_user_id();
if( '' != get_user_meta( $user_id, 'paying_customer', true ) )
return true;
return false;
}
并在条件检查中使用该函数:
if( so27296867_is_paying_customer() ){
// current user is paying customer, do stuff
}