wordpress WooCommerce订单计数器返回状态500

vfwfrxfs  于 2023-03-07  发布在  WordPress
关注(0)|答案(1)|浏览(112)

虽然创建一个函数,返回一个整数计数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**

我只是想让这个功能正常工作。假设一个客户有一个新订单,我们(管理员)将此订单的状态从"暂挂"更新为"已完成"我们需要客户在页面前端了解此状态更改,以发出警报(但无论是什么警报,这是工作的简单部分,你可以忘记这一点,我可以做到),所以...任何订单状态更改或说明订单从管理员必须返回,因此我不需要计数器。

r8uurelv

r8uurelv1#

你可以根据需要修改这个函数数据,我希望这是有帮助的。

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' );

相关问题