为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 WooCommerce 中获取所有订单状态的名称和名称?

如何在 WooCommerce 中获取所有订单状态的名称和名称?

PHP
慕村225694 2022-07-29 10:20:46
我想获取所有 WooCommerce 订单状态的所有标签和名称。我尝试了以下线程的答案:Woocommerce get list of order statuses list但没有成功。我使用最新的 woocommerce 版本。任何帮助表示赞赏。
查看完整描述

3 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

您将使用wc_get_order_statuses()WC_Order 函数中的专用函数,该函数默认为您提供以下数组:


$order_statuses = array(

    'wc-pending'    => _x( 'Pending payment', 'Order status', 'woocommerce' ),

    'wc-processing' => _x( 'Processing', 'Order status', 'woocommerce' ),

    'wc-on-hold'    => _x( 'On hold', 'Order status', 'woocommerce' ),

    'wc-completed'  => _x( 'Completed', 'Order status', 'woocommerce' ),

    'wc-cancelled'  => _x( 'Cancelled', 'Order status', 'woocommerce' ),

    'wc-refunded'   => _x( 'Refunded', 'Order status', 'woocommerce' ),

    'wc-failed'     => _x( 'Failed', 'Order status', 'woocommerce' ),

);

所有自定义的附加订单状态也将包括在内wc_order_statuses,因为在此函数中应用了过滤器挂钩。


查看完整回答
反对 回复 2022-07-29
?
万千封印

TA贡献1891条经验 获得超3个赞

wc_get_order_statuses()将仅提供默认的 WooCommerce 状态,但要获取所有订单状态,您可以使用以下函数woocommerce_get_all_order_statuses()


function woocommerce_get_all_order_statuses() {

  $order_statuses = get_posts( array('post_type'=>'wc_order_status', 'post_status'=>'publish', 'numberposts'=>-1) );

 

  $statuses = array();

  foreach ( $order_statuses as $status ) {

    $statuses[ $status->post_name ] = $status->post_title;

  }


  return $statuses;

}


查看完整回答
反对 回复 2022-07-29
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

将以下代码段添加到 functions.php 并在您要使用的地方调用 woocommerce_get_order_statuses()。


function woocommerce_get_order_statuses() {

      $order_statuses = get_terms( 'shop_order_status', array( 'hide_empty' => false ) );

      $statuses = array();

      foreach ( $order_statuses as $status ) {

        $statuses[ $status->slug ] = $status->name;

      }

      return $statuses;

    }


查看完整回答
反对 回复 2022-07-29
  • 3 回答
  • 0 关注
  • 155 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信