Php WooCommerce Dokan多供应商隐藏特定订单状态供应商的订单
我们正在使用Dokan multivendor,并希望从供应商订单概览仪表板中隐藏具有特定订单状态的订单。下面是Dokan在order overivew中向供应商显示订单的全部代码 我能够过滤订单中的一个特定订单状态。在下面的示例中,我们隐藏“归档”订单。这是有效的。但我们还想隐藏其他订单状态 已经开始工作:Php WooCommerce Dokan多供应商隐藏特定订单状态供应商的订单,php,wordpress,woocommerce,dokan,Php,Wordpress,Woocommerce,Dokan,我们正在使用Dokan multivendor,并希望从供应商订单概览仪表板中隐藏具有特定订单状态的订单。下面是Dokan在order overivew中向供应商显示订单的全部代码 我能够过滤订单中的一个特定订单状态。在下面的示例中,我们隐藏“归档”订单。这是有效的。但我们还想隐藏其他订单状态 已经开始工作: <?php foreach ($user_orders as $order) { if ($order->status !== "failed&quo
<?php
foreach ($user_orders as $order) {
if ($order->status !== "failed") {
?>
foreach ($user_orders as $order) {
if ($order->status !== "failed" || $order->status !=="pending" || $order->status !=="cancelled") {
?>
<tbody>
<?php
foreach ($user_orders as $order) {
if ($order->status !== "failed") {
?>
<tr >
<td class="dokan-order-select">
<label for="cb-select-<?php echo esc_attr( $order->get_id() ); ?>"></label>
<input class="cb-select-items dokan-checkbox" type="checkbox" name="bulk_orders[]" value="<?php echo esc_attr( $order->get_id() ); ?>">
</td>
<?php if ( current_user_can( 'dokan_manage_order' ) ): ?>
<td class="dokan-order-action" width="17%" data-title="<?php esc_attr_e( 'Action', 'dokan-lite' ); ?>" >
<?php
do_action( 'woocommerce_admin_order_actions_start', $order );
$actions = array();
if ( dokan_get_option( 'order_status_change', 'dokan_selling', 'on' ) == 'on' ) {
if ( in_array( dokan_get_prop( $order, 'status' ), array( 'pending', 'on-hold' ) ) ) {
$actions['processing'] = array(
'url' => wp_nonce_url( admin_url( 'admin-ajax.php?action=dokan-mark-order-processing&order_id=' . dokan_get_prop( $order, 'id' ) ), 'dokan-mark-order-processing' ),
'name' => __( 'Processing', 'dokan-lite' ),
'action' => "processing",
'icon' => '<i class="fa fa-clock-o"> </i>'
);
}
if ( in_array( dokan_get_prop( $order, 'status' ), array( 'pending', 'on-hold', 'processing' ) ) ) {
$actions['complete'] = array(
'url' => wp_nonce_url( admin_url( 'admin-ajax.php?action=dokan-mark-order-complete&order_id=' . dokan_get_prop( $order, 'id' ) ), 'dokan-mark-order-complete' ),
'name' => __( 'Complete', 'dokan-lite' ),
'action' => "complete",
'icon' => '<i class="fa fa-check"> </i>'
);
}
}
$actions['view'] = array(
'url' => wp_nonce_url( add_query_arg( array( 'order_id' => dokan_get_prop( $order, 'id' ) ), dokan_get_navigation_url( 'orders' ) ), 'dokan_view_order' ),
'name' => __( 'View', 'dokan-lite' ),
'action' => "view",
'icon' => '<i class="fa fa-eye"> </i>'
);
$actions = apply_filters( 'woocommerce_admin_order_actions', $actions, $order );
foreach ($actions as $action) {
$icon = ( isset( $action['icon'] ) ) ? $action['icon'] : '';
printf( '<a class="dokan-btn dokan-btn-default dokan-btn-sm tips" href="%s" data-toggle="tooltip" data-placement="top" title="%s">%s</a> ', esc_url( $action['url'] ), esc_attr( $action['name'] ), $icon );
}
do_action( 'woocommerce_admin_order_actions_end', $order );
?>
</td>
<td class="dokan-order-id" data-title="<?php esc_attr_e( 'Order', 'dokan-lite' ); ?>" >
<?php if ( current_user_can( 'dokan_view_order' ) ): ?>
<?php echo '<a href="' . esc_url( wp_nonce_url( add_query_arg( array( 'order_id' => dokan_get_prop( $order, 'id' ) ), dokan_get_navigation_url( 'orders' ) ), 'dokan_view_order' ) ) . '"><strong>' . sprintf( __( 'Order %s', 'dokan-lite' ), esc_attr( $order->get_order_number() ) ) . '</strong></a>'; ?>
<?php else: ?>
<?php echo '<strong>' . sprintf( __( 'Order %s', 'dokan-lite' ), esc_attr( $order->get_order_number() ) ) . '</strong>'; ?>
<?php endif ?>
</td>
<td class="dokan-order-status" data-title="<?php esc_attr_e( 'Status', 'dokan-lite' ); ?>" >
<?php echo '<span class="dokan-label dokan-label-' . dokan_get_order_status_class( dokan_get_prop( $order, 'status' ) ) . '">' . dokan_get_order_status_translated( dokan_get_prop( $order, 'status' ) ) . '</span>'; ?>
</td>
<td class="dokan-order-date" data-title="<?php esc_attr_e( 'Date', 'dokan-lite' ); ?>" >
<?php
if ( '0000-00-00 00:00:00' == dokan_get_date_created( $order ) ) {
$t_time = $h_time = __( 'Unpublished', 'dokan-lite' );
} else {
$t_time = get_the_time( 'Y/m/d g:i:s A', dokan_get_prop( $order, 'id' ) );
$gmt_time = strtotime( dokan_get_date_created( $order ) . ' UTC' );
$time_diff = current_time( 'timestamp', 1 ) - $gmt_time;
if ( $time_diff > 0 && $time_diff < 24 * 60 * 60 ) {
$h_time = sprintf( __( '%s ago', 'dokan-lite' ), human_time_diff( $gmt_time, current_time( 'timestamp', 1 ) ) );
} else {
$h_time = get_the_time( 'Y/m/d', dokan_get_prop( $order, 'id' ) );
}
}
echo '<abbr title="' . esc_attr( dokan_date_time_format( $t_time ) ) . '">' . esc_html( apply_filters( 'post_date_column_time', dokan_date_time_format( $h_time, true ) , dokan_get_prop( $order, 'id' ) ) ) . '</abbr>';
?>
</td>
<td class="dokan-order-total" data-title="<?php esc_attr_e( 'Order Total', 'dokan-lite' ); ?>" >
<?php echo $order->get_formatted_order_total(); ?>
</td>
<td class="dokan-order-earning" data-title="<?php esc_attr_e( 'Earning', 'dokan-lite' ); ?>" >
<?php echo wp_kses_post( wc_price( dokan()->commission->get_earning_by_order( $order ) ) ); ?>
</td>
<?php endif ?>
</tr>
<?php } } ?>
</tbody>
dokan订单清单的完整代码:
<?php
foreach ($user_orders as $order) {
if ($order->status !== "failed") {
?>
foreach ($user_orders as $order) {
if ($order->status !== "failed" || $order->status !=="pending" || $order->status !=="cancelled") {
?>
<tbody>
<?php
foreach ($user_orders as $order) {
if ($order->status !== "failed") {
?>
<tr >
<td class="dokan-order-select">
<label for="cb-select-<?php echo esc_attr( $order->get_id() ); ?>"></label>
<input class="cb-select-items dokan-checkbox" type="checkbox" name="bulk_orders[]" value="<?php echo esc_attr( $order->get_id() ); ?>">
</td>
<?php if ( current_user_can( 'dokan_manage_order' ) ): ?>
<td class="dokan-order-action" width="17%" data-title="<?php esc_attr_e( 'Action', 'dokan-lite' ); ?>" >
<?php
do_action( 'woocommerce_admin_order_actions_start', $order );
$actions = array();
if ( dokan_get_option( 'order_status_change', 'dokan_selling', 'on' ) == 'on' ) {
if ( in_array( dokan_get_prop( $order, 'status' ), array( 'pending', 'on-hold' ) ) ) {
$actions['processing'] = array(
'url' => wp_nonce_url( admin_url( 'admin-ajax.php?action=dokan-mark-order-processing&order_id=' . dokan_get_prop( $order, 'id' ) ), 'dokan-mark-order-processing' ),
'name' => __( 'Processing', 'dokan-lite' ),
'action' => "processing",
'icon' => '<i class="fa fa-clock-o"> </i>'
);
}
if ( in_array( dokan_get_prop( $order, 'status' ), array( 'pending', 'on-hold', 'processing' ) ) ) {
$actions['complete'] = array(
'url' => wp_nonce_url( admin_url( 'admin-ajax.php?action=dokan-mark-order-complete&order_id=' . dokan_get_prop( $order, 'id' ) ), 'dokan-mark-order-complete' ),
'name' => __( 'Complete', 'dokan-lite' ),
'action' => "complete",
'icon' => '<i class="fa fa-check"> </i>'
);
}
}
$actions['view'] = array(
'url' => wp_nonce_url( add_query_arg( array( 'order_id' => dokan_get_prop( $order, 'id' ) ), dokan_get_navigation_url( 'orders' ) ), 'dokan_view_order' ),
'name' => __( 'View', 'dokan-lite' ),
'action' => "view",
'icon' => '<i class="fa fa-eye"> </i>'
);
$actions = apply_filters( 'woocommerce_admin_order_actions', $actions, $order );
foreach ($actions as $action) {
$icon = ( isset( $action['icon'] ) ) ? $action['icon'] : '';
printf( '<a class="dokan-btn dokan-btn-default dokan-btn-sm tips" href="%s" data-toggle="tooltip" data-placement="top" title="%s">%s</a> ', esc_url( $action['url'] ), esc_attr( $action['name'] ), $icon );
}
do_action( 'woocommerce_admin_order_actions_end', $order );
?>
</td>
<td class="dokan-order-id" data-title="<?php esc_attr_e( 'Order', 'dokan-lite' ); ?>" >
<?php if ( current_user_can( 'dokan_view_order' ) ): ?>
<?php echo '<a href="' . esc_url( wp_nonce_url( add_query_arg( array( 'order_id' => dokan_get_prop( $order, 'id' ) ), dokan_get_navigation_url( 'orders' ) ), 'dokan_view_order' ) ) . '"><strong>' . sprintf( __( 'Order %s', 'dokan-lite' ), esc_attr( $order->get_order_number() ) ) . '</strong></a>'; ?>
<?php else: ?>
<?php echo '<strong>' . sprintf( __( 'Order %s', 'dokan-lite' ), esc_attr( $order->get_order_number() ) ) . '</strong>'; ?>
<?php endif ?>
</td>
<td class="dokan-order-status" data-title="<?php esc_attr_e( 'Status', 'dokan-lite' ); ?>" >
<?php echo '<span class="dokan-label dokan-label-' . dokan_get_order_status_class( dokan_get_prop( $order, 'status' ) ) . '">' . dokan_get_order_status_translated( dokan_get_prop( $order, 'status' ) ) . '</span>'; ?>
</td>
<td class="dokan-order-date" data-title="<?php esc_attr_e( 'Date', 'dokan-lite' ); ?>" >
<?php
if ( '0000-00-00 00:00:00' == dokan_get_date_created( $order ) ) {
$t_time = $h_time = __( 'Unpublished', 'dokan-lite' );
} else {
$t_time = get_the_time( 'Y/m/d g:i:s A', dokan_get_prop( $order, 'id' ) );
$gmt_time = strtotime( dokan_get_date_created( $order ) . ' UTC' );
$time_diff = current_time( 'timestamp', 1 ) - $gmt_time;
if ( $time_diff > 0 && $time_diff < 24 * 60 * 60 ) {
$h_time = sprintf( __( '%s ago', 'dokan-lite' ), human_time_diff( $gmt_time, current_time( 'timestamp', 1 ) ) );
} else {
$h_time = get_the_time( 'Y/m/d', dokan_get_prop( $order, 'id' ) );
}
}
echo '<abbr title="' . esc_attr( dokan_date_time_format( $t_time ) ) . '">' . esc_html( apply_filters( 'post_date_column_time', dokan_date_time_format( $h_time, true ) , dokan_get_prop( $order, 'id' ) ) ) . '</abbr>';
?>
</td>
<td class="dokan-order-total" data-title="<?php esc_attr_e( 'Order Total', 'dokan-lite' ); ?>" >
<?php echo $order->get_formatted_order_total(); ?>
</td>
<td class="dokan-order-earning" data-title="<?php esc_attr_e( 'Earning', 'dokan-lite' ); ?>" >
<?php echo wp_kses_post( wc_price( dokan()->commission->get_earning_by_order( $order ) ) ); ?>
</td>
<?php endif ?>
</tr>
<?php } } ?>
</tbody>
您只需使用&dokan\u get\u prop($order,'status')
foreach($user\u订单为$order){
//调试信息,请稍后删除
$status=dokan_get_prop($order,'status');
回显“订单状态=”。$status;
//不在阵列中
if(!in_数组(dokan_get_prop($order,'status')、数组('pending','on hold','etc…)){
//继续
您好,谢谢!它几乎可以100%工作。但是我对以下订单状态有问题。它们仍然显示在dokan供应商订单概述中。(重定向、等待、手动决策、草稿)但是,它们是什么样的状态?WC文档中没有关于它们的信息:foreach($user\u orders as$order){//如果(!in_数组(dokan_get_prop($order,'status')、数组('pending','on hold','waiting','failed','cancelled','redirected','draft','manual')),则不在数组中{//continueb但是,这些状态是什么?WooCommerce中已经存在默认状态,但是其他插件可以添加新的状态,并且命名可以是任何东西…因此最好在继续之前进行调试,否则这只是“猜测”,没有具体信息谢谢!你能给我一个提示吗提示如何调试?我在哪里可以从订单状态中看到内部名称?请参阅更新的答案。注意