WooCommerce管理订单-仅在加载用户时运行操作

时间:2017-07-26 作者:Nik

我正在使用this plugin 切换用户。我发现了一个片段,允许您在WooCommerce管理订单页面上切换用户,这非常有用。

add_action( \'woocommerce_admin_order_data_after_order_details\', \'ccef_order_switch_to\', 99 );
/**
 * Add a switch to user link on the order details.
 *
 * @param object $order The WC Order that we\'re working with.
 */
function ccef_order_switch_to( $order ) {
    $user_switching = $GLOBALS[\'user_switching\'];
    if ( $user_switching ) {
        $user        = get_user_by( \'id\', $order->get_user_id() );
        $switch_link = $user_switching::maybe_switch_url( $user );
        if ( $switch_link ) {
            echo \'<a href="\' . esc_url( $switch_link ) . \'">Switch To</a>\';
        }
    }
}
我正在努力解决的问题。。,但我不知道该怎么做,是;仅当已创建/加载用户时才运行此操作。这样做的原因是,如果没有加载用户,它会阻止页面正确加载,直到选择了一个用户。我们在执行管理命令时会动态创建用户,如果没有用户可切换,则此代码段会中断操作。

因此,本质上的问题是,是否有一种方法仅在加载了用户id的情况下运行该操作?

ThanksNik公司

1 个回复
最合适的回答,由SO网友:Cesar Henrique Damascena 整理而成

一种方法是检查get_current_user() 并检查是否返回一些内容,如果是,请运行代码。如以下示例:

add_action( \'woocommerce_admin_order_data_after_order_details\', \'ccef_order_switch_to\', 99 );
/**
 * Add a switch to user link on the order details.
 *
 * @param object $order The WC Order that we\'re working with.
 */
function ccef_order_switch_to( $order ) {
    $current_user = wp_get_current_user();
    $user_switching = $GLOBALS[\'user_switching\'];

    if ( $user_switching && $current_user ) {
        $user        = get_user_by( \'id\', $order->get_user_id() );
        $switch_link = \'\'; 

        // Only try to switch if a $user was set. 
        if( $user ) {
          $switch_link = $user_switching::maybe_switch_url( $user );
        } 

        if ( $switch_link ) {
            echo \'<a href="\' . esc_url( $switch_link ) . \'">Switch To</a>\';
        }
    }
}

结束

相关推荐

从wp_USERS和wp_USERMETA中一次删除几千个订户

我有一个有7万垃圾邮件订阅者的网站,我不需要他们中的任何一个。因此,我需要使用adminer和/或phpmyadmin中的查询从wp\\U users中删除所有订阅者,并从wp\\U usermeta中删除每个用户的关联元。但是为了防止服务器崩溃,我怎么能一次删除几千个呢?这似乎是我需要的基本查询:DELETE FROM wp_users INNER JOIN wp_usermeta ON wp_users.ID = wp_usermeta.user_id WHERE meta