WooCommerce 从前端隐藏订单项元(非管理员)

Ste*_*hen 3 php wordpress product orders woocommerce

我有几个我不希望客户看到的订单项元详细信息(在帐户信息下的查看订单页面上)。我找到了一个过滤器,可以从 ADMIN(我仍然希望看到它的地方)中删除这些数据,但找不到类似的过滤器来从 FRONT END(它应该隐藏的地方)中删除它。

这是将(对我来说毫无用处)从后端管理员中删除它的代码:

add_filter( 'woocommerce_hidden_order_itemmeta', 'add_hidden_order_items' );
function add_hidden_order_items( $order_items ) {
    $order_items[] = 'paid_already';
    $order_items[] = 'variation_sku';
    // and so on...
    return $order_items;
}
Run Code Online (Sandbox Code Playgroud)

小智 6

//remove order item meta key
add_filter( 'woocommerce_order_item_get_formatted_meta_data', 'mobilefolk_order_item_get_formatted_meta_data', 10, 1 );

function mobilefolk_order_item_get_formatted_meta_data($formatted_meta){
    $temp_metas = [];
    foreach($formatted_meta as $key => $meta) {
        if ( isset( $meta->key ) && ! in_array( $meta->key, [
                'lyric_id',
                'lyric_song_title',
                'lyric_artist_name'
            ] ) ) {
            $temp_metas[ $key ] = $meta;
        }
    }
    return $temp_metas;
}
Run Code Online (Sandbox Code Playgroud)


pas*_*tgt 6

使用下划线前缀保存值,这样它就不会显示,只是保存。像这样:

$item->add_meta_data('_hidden_field', '123', true);
Run Code Online (Sandbox Code Playgroud)

  • 这应该是最好的答案;它简单而有效。 (3认同)

Ste*_*hen 0

好吧,它最终比我想象的要容易得多,模板实际上已经给出了一个带有我的项目元名称的类,所以我只是将它隐藏在 css 中,如下所示:

.order_details .variation-variation_sku, .order_details .variation-paid_already {
    display: none !important;
}
Run Code Online (Sandbox Code Playgroud)

虽然很高兴知道如何防止这些项目元被输出,但我可以接受这个作为解决方案。