我正在使用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公司
最合适的回答,由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>\';
}
}
}