2016-06-02 4 views
1

고객에게 (주문 정보 페이지의 주문 정보 페이지에서) 싫어할 수있는 몇 가지 주문 항목 메타 정보가 있습니다. ADMIN에서이 데이터를 제거하는 필터를 찾았지만 FRONT END (숨겨진 위치)에서 필터를 제거 할 수없는 유사한 필터를 찾을 수 없습니다. 여기 WooCommerce 프런트 엔드에서 주문 항목 메타 숨기기 (관리자가 아님)

코드입니다 것이다 (쓸데없이, 나를 위해) 백 엔드 관리자에서 제거 : 당신은 프론트 엔드의 순서보기에서 메타 일부 항목을 숨기려면

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; 
} 

답변

0

글쎄, 내가 랬 것보다 훨씬 쉽게 었죠, 템플릿 사실은 이미 내 항목 메타의 이름으로 클래스를 끈다, 그래서 난 그냥 지금처럼 CSS에 숨겨 :

.order_details .variation-variation_sku, .order_details .variation-paid_already { 
    display: none !important; 
} 

이러한 항목 메타가 출력되는 것을 방지하는 방법을 알고 있으면 좋겠지 만 해결책으로이 항목을 사용할 수 있습니다. 항목의 메타 데이터를 다루는

1

것은 당신이 오버라이드 (override) 할 필요가 있습니다
order-details-item.php woocommerce 템플릿 파일.

저는 추천합니다 : Overriding woocommerce templates via a Theme 방법, 템플릿 woocommerce 폴더를 활성 테마 (또는 하위 테마)로 복사하고 이름을 "woocommerce"로 변경하십시오. 활성 테마 내부의 해당 woocommerce 폴더에 복사되면 order-details-item.phporder 하위 폴더에 있습니다.

라인에서 order-details-item.php 36이를 발견 할 것이다 :

  $order->display_item_meta($item); 
      $order->display_item_downloads($item); 

당신은이 조건 등을 첨가 변경할 수 있습니다

  if ($item != 'paid_already' || $item != 'variation_sku') { 
       $order->display_item_meta($item); 
       $order->display_item_downloads($item); 
      } 

내가의 진실성의 확신하지 '이 조건부 수 테스트 해봐. 당신은 ... 그것을 약간 수정해야 할 의무 될 수 있습니다

단지 이런 식으로 작동 정보, 기능 display_item_meta()에 대한 :

/** 
* Display meta data belonging to an item. 
* @param array $item 
*/ 
public function display_item_meta($item) { 
    $product = $this->get_product_from_item($item); 
    $item_meta = new WC_Order_Item_Meta($item, $product); 
    $item_meta->display(); 
} 

참고 :

+0

감사합니다,하지만 난 그것을 시도하고 해당 항목을 숨기지 않았다 주문 페이지에서 (그리고 로그에 오류가 발생하지 않았습니다.) – Stephen

+0

$ item은 배열이고, 배열에서 키를 찾을 수는 있지만, 두 개의 키를 무시하고 배열을 출력 할 수는 없습니다. 확실하지 않으면 여기에 새로운 for 루프를 쓰지 않고 내가 원하는 것을 할 수있는 방법이 있는지 ... – Stephen

+0

어쨌든 당신의 답을 upvoted, 도움을 주셔서 감사합니다. – Stephen

-1
//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; 
} 
+0

죄송합니다, 내 코드에 내 설명을 삽입합니다.지금은 매우 유용하다고 생각합니다. 여러 번 검색해야하지만 누구도 좋은 해결책을 찾을 수 없습니다. 내 솔루션 주문 항목 메타 키를 사용하는 모든 플러그인에 대한 문제를 해결할 수 있습니다. –

0

, 단순히 CSS를 사용하여 카트에서 항목 메타 데이터를 숨기고있어 : 대답에 대한

.wc-item-meta {display:none;} 
관련 문제