【问题标题】:order counter in woocommerce returns status 500woocommerce 中的订单计数器返回状态 500
【发布时间】:2018-08-16 06:57:54
【问题描述】:

在创建一个返回 int 计数 woocommerce 订单状态和 woocommerce 订单备注的函数时,我无法使其工作,而且我不知道自己做错了什么。

我知道 wc_orders_count( $status ) 返回特定订单状态的订单数量,如果我使用了错误的函数,必须使用哪个?如果我用错了,必须怎么用?

这里是函数

 add_action( 'init' 'custom_counter' );
    function custom_counter() {
        $customer_orders = get_posts( apply_filters( 'woocommerce_my_account_my_orders_query', array(
            'meta_key'    => '_customer_user',
            'meta_value'  => get_current_user_id(),
            'post_type'   => wc_get_order_types( 'view-orders' ),
            'post_status' => array_keys( wc_get_order_statuses() )
        ) ) );
        if ( $customer_orders ) {
            $status = wc_get_order( $customer_orders )->get_status();
            $orderscounter = wc_orders_count( $status );
            ?>  
                <p class="counter">
                <?php echo $orderscounter; ?>
                </p>
            <?php
        }

编辑

实际上,我正在寻找一个在下新订单或更新订单状态时返回警报的函数,所以我不知道是否需要计数器。

编辑 2

我只是希望该功能正常工作。假设客户有新订单,我们(管理员)将此订单的状态从“暂停”更新为“已完成”,我们需要客户在页面前端知道此状态更改作为警报(但无论警报是什么,这都是工作的简单部分,你可以忘记这一点,我可以做到),所以......必须返回来自管理员的任何订单状态更改或备注订单,因此我不需要计数器。

【问题讨论】:

  • 您尝试调试代码?
  • 实际上不只是给我一个状态 500 @GanganiRoshan
  • 您可以尝试调试代码并说出在哪一行返回此状态码。
  • 在 google 开发者控制台中?...你知道 wordpress woocommerce 吗?
  • 替换 add_action('init', 'custom_counter');

标签: php wordpress function woocommerce counter


【解决方案1】:

您可以根据需要修改此函数数据,希望对您有所帮助。

function display_woocommerce_order_count( $atts, $content = null ) {
    $args = shortcode_atts( array(
        'status' => 'completed',
    ), $atts );
    $statuses    = array_map( 'trim', explode( ',', $args['status'] ) );
    $order_count = 0;
    foreach ( $statuses as $status ) {
        // if we didn't get a wc- prefix, add one
        if ( 0 !== strpos( $status, 'wc-' ) ) {
            $status = 'wc-' . $status;
        }
        $order_count += wp_count_posts( 'shop_order' )->$status;
    }
    ob_start();
    echo number_format( $order_count );
    return ob_get_clean();
}
add_shortcode( 'wc_order_count', 'display_woocommerce_order_count' );

编辑问题后尝试以下答案:

正如 Xcid 的回答所示,您需要注册电子邮件。

add_action( 'woocommerce_order_status_wc-order-confirmed', array( WC(), 'send_transactional_email' ), 10, 10 );

我在 WooCommerce 2.3 中添加了一个过滤器,因此当它出现时,自定义电子邮件将能够添加到 WooCommerce 注册的电子邮件操作列表中:

// As of WooCommerce 2.3
function so_27112461_woocommerce_email_actions( $actions ){
    $actions[] = 'woocommerce_order_status_wc-order-confirmed';
    return $actions;
}
add_filter( 'woocommerce_email_actions', 'so_27112461_woocommerce_email_actions' );

【讨论】:

  • 由于某种原因,此短代码显示错误的数字。实际上,我正在寻找一个在下新订单或更新订单状态时返回警报的函数,所以我不知道我是否需要计数器
  • for 不能正常工作,如果我店里有 6 个订单,它会返回 3 个
  • 正如您在我编辑的问题中看到的,现在我不需要柜台,我需要提醒客户知道他们的订单或备注订单何时更新
猜你喜欢
  • 2017-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-05
  • 2017-04-02
  • 2017-05-24
  • 2017-12-21
  • 2016-04-17
相关资源
最近更新 更多