我正在用Wordpress建立网站,但我没有足够的PHP知识来做以下事情:

我想知道是否有可能创建一个代码,在登录到某个页面后将用户(WooCommerce客户)重定向到其他页面,并将购买了产品(任何产品)的客户重定向到不同的页面?

由于WooCommerce(据我所知)没有区分购买了产品的客户和刚刚创建账户的客户的用户角色,这可能吗?

我希望刚刚登录但没有购买产品的客户被重定向到A页,而登录并已经购买产品的客户被重定向到B页.

我的代码目前看起来是这样的,但它没有区分付费客户和未付费客户:

function ts_redirect_login( $redirect) {

$redirect_page_id = url_to_postid( $redirect );
$checkout_page_id = wc_get_page_id( 'checkout' );
$redirection_url = ( '/page-A/' );

if( $redirect_page_id == $checkout_page_id ) {
return $redirect;
}

return $redirection_url;
}

add_filter( 'woocommerce_login_redirect', 'ts_redirect_login' );

这会将所有用户重定向到页面A(除非他们正在 checkout ),但不会将付费用户和非付费用户的重定向分开.

有人知道如何在没有插件的情况下实现这一点吗?

谢谢!

推荐答案

试着使用它:

function ts_redirect_login( $redirect) {
    if( isset($_POST['username']) && !empty($_POST['username']) ){
        $user_data = get_user_by(is_email( $_POST['username'] ) ? 'email' : 'login', $_POST['username']);
        $user_id = $user_data->data->ID;
        $customer_orders = get_posts( array(
            'numberposts' => -1,
            'meta_key'    => '_customer_user',
            'meta_value'  => $user_id,
            'post_type'   => 'shop_order',
            'post_status' => array('wc-completed','wc-processing')
        ) );
        if($customer_orders){
            // Purchased user
            $redirect = get_permalink(37); // replace with your page link
        }else{
            // Non purchased user
            $redirect = get_permalink(271); // replace with your page link
        }
    }
    return $redirect;
}
add_filter( 'woocommerce_login_redirect', 'ts_redirect_login' );

Php相关问答推荐

在WooCommerce中执行一次银行电汇确认付款代码

Yahoo Finance API文件_GET_CONTENTS 429请求太多

PHP如何将ARRAY_MAP与Reset()配合使用

无法在Laravel/Vue停靠容器中启动MySQL

MySQLi是否在事务错误时删除保存点(并且仅删除保存点)?

WooCommerce数量减号和加号图标未显示

在WooCommerce管理中 for each 运输方法设置添加自定义字段

返回WooCommerce中的所有已启用变体

我有一个显示记录的表格,每行在最右边有两个按钮.如何才能以正确的顺序获得表的值?

在Laravel中创建辅助函数时的约定

在WooCommercestore 页面上显示库存产品属性的值

如何批量处理消息总线中的消息

使用自定义插件中的 WooCommerce 模板发送自定义邮箱

如何在 Phpunit 的静态提供程序中创建测试双打?

根据所选付款方式更改 WooCommerce 提交结帐按钮文本

Laravel Eloquent(where 子句)

WooCommerce - 调用功能ID不正确.不应直接访问订单属性

如何在构建 PHP 类别数组树的递归函数中将父面包屑传递给子项?

同时执行odbc_execute、odbc_fetch_row和odbc_result

为什么 8.0 之前的 PHP 版本拒绝命名空间Random\Namespace作为无效语法?