仅显示具有特定状态的 WooCommerce 订单的图像

问题描述 投票:0回答:1

我只想在用户拥有任何状态为“已发货”的 WooCommerce 订单(这是我已经定义的自定义状态)时显示图像或文本。我的想法是用一个类指定这些项目(我想显示或隐藏的项目)并添加 php 但我迷路了。

我已经尝试过了

function check_user_orders_status() {
    
    if (is_user_logged_in()) {
        
        $user_id = get_current_user_id();

        
        $has_shipped_orders = wc_get_orders(array(
            'limit' => 1,
            'customer' => $user_id,
            'status' => 'shipped',
        ));

        
        return count($has_shipped_orders) > 0;
    }

    
    return false;
}
php css wordpress woocommerce orders
1个回答
0
投票

以下将在客户订单(订单视图)、已收到订单和订单支付页面的正文类中添加订单状态。

订单状态会输出为“status-”+当前订单状态,如:

  • status-processing
    对于“正在处理”订单状态,
  • status-shipped
    对于“已发货”订单状态,
  • 等等

因此,您将能够添加一些针对特定订单状态的 CSS 以显示或隐藏特定元素,例如:

.status-shipped .element-to-target {
    display:none;
}

代码:

add_filter( 'body_class', 'add_order_status_to_body_class' );
function add_order_status_to_body_class( $classes ){
    global $wp;

    foreach ( array('view-order', 'order-received', 'order-pay') as $endpoint ) {
        if ( is_wc_endpoint_url($endpoint) && isset($wp->query_vars[$endpoint]) ) {
            $order_id    = intval($wp->query_vars[$endpoint]); // The order ID
            $order       = wc_get_order( $order_id ); // The WC_Order object
            $classes[] = 'status-' . $order->get_status();
        }
    }
    return $classes;
}

代码位于子主题的functions.php 文件中(或插件中)。已测试并有效。

© www.soinside.com 2019 - 2024. All rights reserved.