仅对我的某些用户可见的CTA按钮

时间:2021-01-06 作者:Ariseld Shehaj

我想创建一个CTA按钮/菜单链接,只有在我的网站上没有购买特定产品的人才能看到该链接。已经购买该产品的订阅者不应看到该按钮。我正在使用WooCommerce创建产品。

谢谢大家

1 个回复
SO网友:Majid Ghafoorzade

首先定义一个函数来检查用户以前是否购买过产品。

// function to check product bought by user before

function has_bought_items( $user_var = 0,  $product_ids = 0 ) {
    global $wpdb;
    
    // Based on user ID (registered users)
    if ( is_numeric( $user_var) ) { 
        $meta_key     = \'_customer_user\';
        $meta_value   = $user_var == 0 ? (int) get_current_user_id() : (int) $user_var;
    } 
    // Based on billing email (Guest users)
    else { 
        $meta_key     = \'_billing_email\';
        $meta_value   = sanitize_email( $user_var );
    }
    
    $paid_statuses    = array_map( \'esc_sql\', wc_get_is_paid_statuses() );
    $product_ids      = is_array( $product_ids ) ? implode(\',\', $product_ids) : $product_ids;

    $line_meta_value  = $product_ids !=  ( 0 || \'\' ) ? \'AND woim.meta_value IN (\'.$product_ids.\')\' : \'AND woim.meta_value != 0\';

    // Count the number of products
    $count = $wpdb->get_var( "
        SELECT COUNT(p.ID) FROM {$wpdb->prefix}posts AS p
        INNER JOIN {$wpdb->prefix}postmeta AS pm ON p.ID = pm.post_id
        INNER JOIN {$wpdb->prefix}woocommerce_order_items AS woi ON p.ID = woi.order_id
        INNER JOIN {$wpdb->prefix}woocommerce_order_itemmeta AS woim ON woi.order_item_id = woim.order_item_id
        WHERE p.post_status IN ( \'wc-" . implode( "\',\'wc-", $paid_statuses ) . "\' )
        AND pm.meta_key = \'$meta_key\'
        AND pm.meta_value = \'$meta_value\'
        AND woim.meta_key IN ( \'_product_id\', \'_variation_id\' ) $line_meta_value 
    " );

    // Return true if count is higher than 0 (or false)
    return $count > 0 ? true : false;
}

之后,如果用户尚未购买产品,请创建一个快捷码以显示CTA:

function cta_shortcode() { 
    $cta= \'<a href="#">Buy This Product</a>\'; 
    return has_bought_items() ? "" : $cta;
}

// register shortcode
add_shortcode(\'cta-shortcode\', \'cta_shortcode\'); 
最后,您可以使用此短代码有条件地向用户显示cta。

[cta-shortcode]

相关推荐

Making sub-menus exclusive

我真的不知道该怎么解释我在这里找的东西,我在这里找得太露骨了。在我的网站上,我有一个附带菜单,其中包含一系列子类别,每个子类别中都有一些项目。我想知道当我打开另一个子类别时,是否有办法关闭所有其他打开的子类别,例如:1. Animals ----A. Cats ----B. Dogs 2. People ----A. Samantha ----B. Daniel 当我按下“动物”时,我希望“人”关闭,反之亦