如何使用wc_paying_customer函数创建短代码并仅向付费客户显示内容

时间:2014-12-04 14:46:07

标签: php wordpress function woocommerce shortcode

首先,我是初学者,不熟悉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.htmlhttp://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提供如此出色的解决方案!

1 个答案:

答案 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
}