我只想在用户拥有任何状态为“已发货”的 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;
}
以下将在客户订单(订单视图)、已收到订单和订单支付页面的正文类中添加订单状态。
订单状态会输出为“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 文件中(或插件中)。已测试并有效。