检查用户是否购买了商品并重定向到特定页面
Check if user has bought an item and redirect to a specific page
我有这个功能,但它没有按需要工作。改成wc_customer_bought_product
会不会更好?
目标是检查用户是否购买了免费订阅产品“11344
”,当此用户尝试访问用户帐户中的特定页面时,它会被重定向到另一个页面。
我有一个显示访问统计信息的页面,它是 www.website.com/my-account/
。我想隐藏那个页面,这样当购买了上述产品的用户试图去那里时,就会被重定向到另一个页面 www.website.com/my-account/my-listings/
有人可以建议我需要在此代码中编辑什么吗?目前卡住了,因为这个没有做任何事情。
//You can make this code as function and call it where it is require
$current_user = wp_get_current_user();
if ( 0 == $current_user->ID ) return;
// GET USER ORDERS (COMPLETED + PROCESSING)
$customer_orders = get_posts( array(
'numberposts' => -1,
'meta_key' => '_customer_user',
'meta_value' => $current_user->ID,
'post_type' => wc_get_order_types(),
'post_status' => array_keys( wc_get_is_paid_statuses() ),
) );
// LOOP THROUGH ORDERS AND GET PRODUCT IDS
if ( ! $customer_orders ) return;
$product_ids = array();
foreach ( $customer_orders as $customer_order ) {
$order = wc_get_order( $customer_order->ID );
$items = $order->get_items();
foreach ( $items as $item ) {
$product_id = $item->get_product_id();
$product_ids[] = $product_id;
}
}
$product_ids = array_unique( $product_ids );
if (in_array("11344", $product_ids))
{
wp_redirect("https://website.com/account2"); // Add redirect URL Here
exit;
}
template_redirect
- 在确定加载哪个模板之前触发。
wp_get_current_user
- 检索当前用户对象。
wc_customer_bought_product
- 检查用户(通过电子邮件或 ID 或两者)是否购买了商品。
function action_template_redirect() {
global $wp;
// Retrieve the current user object.
$current_user = wp_get_current_user();
if ( $current_user->ID == 0 ) return;
// DEBUG PURPOSES, UNCOMMENT IF NECESSARY
//echo $wp->request;
// On my-account page
if( $wp->request == 'my-account' ) {
// Set product ID
$product_id = 11344;
// If true
if ( wc_customer_bought_product( $current_user->user_email, $current_user->ID, $product_id ) ) {
// Redirect
wp_safe_redirect('/my-account/my-listings/');
exit;
}
}
}
add_action( 'template_redirect', 'action_template_redirect' );
我有这个功能,但它没有按需要工作。改成wc_customer_bought_product
会不会更好?
目标是检查用户是否购买了免费订阅产品“11344
”,当此用户尝试访问用户帐户中的特定页面时,它会被重定向到另一个页面。
我有一个显示访问统计信息的页面,它是 www.website.com/my-account/
。我想隐藏那个页面,这样当购买了上述产品的用户试图去那里时,就会被重定向到另一个页面 www.website.com/my-account/my-listings/
有人可以建议我需要在此代码中编辑什么吗?目前卡住了,因为这个没有做任何事情。
//You can make this code as function and call it where it is require
$current_user = wp_get_current_user();
if ( 0 == $current_user->ID ) return;
// GET USER ORDERS (COMPLETED + PROCESSING)
$customer_orders = get_posts( array(
'numberposts' => -1,
'meta_key' => '_customer_user',
'meta_value' => $current_user->ID,
'post_type' => wc_get_order_types(),
'post_status' => array_keys( wc_get_is_paid_statuses() ),
) );
// LOOP THROUGH ORDERS AND GET PRODUCT IDS
if ( ! $customer_orders ) return;
$product_ids = array();
foreach ( $customer_orders as $customer_order ) {
$order = wc_get_order( $customer_order->ID );
$items = $order->get_items();
foreach ( $items as $item ) {
$product_id = $item->get_product_id();
$product_ids[] = $product_id;
}
}
$product_ids = array_unique( $product_ids );
if (in_array("11344", $product_ids))
{
wp_redirect("https://website.com/account2"); // Add redirect URL Here
exit;
}
template_redirect
- 在确定加载哪个模板之前触发。wp_get_current_user
- 检索当前用户对象。wc_customer_bought_product
- 检查用户(通过电子邮件或 ID 或两者)是否购买了商品。
function action_template_redirect() {
global $wp;
// Retrieve the current user object.
$current_user = wp_get_current_user();
if ( $current_user->ID == 0 ) return;
// DEBUG PURPOSES, UNCOMMENT IF NECESSARY
//echo $wp->request;
// On my-account page
if( $wp->request == 'my-account' ) {
// Set product ID
$product_id = 11344;
// If true
if ( wc_customer_bought_product( $current_user->user_email, $current_user->ID, $product_id ) ) {
// Redirect
wp_safe_redirect('/my-account/my-listings/');
exit;
}
}
}
add_action( 'template_redirect', 'action_template_redirect' );