2016-08-07 26 views
6

Cập nhật (liên quan đến tác giả bình luận):Thuộc tính sản phẩm cụ thể Echo và Meta Data trong WooCommerce giỏ

Tôi muốn tùy chỉnh WooCommerce cart.php để hiển thị một số siêu dữ liệu đang làm việc tốt trên sản phẩm trang sử dụng Essential Grid premium plugin.

Tôi muốn hiển thị một số trường thuộc tính sản phẩm và cũng có một số trường meta tùy chỉnh mà tôi đã tạo với trình tạo meta trường meta của plugin Essential Grid.

Để thử nghiệm, tôi đang sử dụng 'Height' thuộc tính (để 'pa_height') và lĩnh vực tùy chỉnh 'Age' mà sên là 'eg-age-cal'.

Hiện nay, tôi đã cố gắng sử dụng như sau:

<?php echo get_post_meta($product_id, 'pa_height', true);?> 

Và cũng:

<?php echo get_post_meta($product_id, 'eg-age-cal', true);?> 

Nhưng những dường như không làm việc.

tôi đã quản lý để lấy mã để làm việc sử dụng:

<?php echo get_post_meta($product_id, '_regular_price', true);?> 

Vì vậy, tôi biết mã đang làm việc.

Tôi chỉ cần trợ giúp làm việc, làm cách nào tôi có thể nhận được các giá trị từ Thuộc tính tùy chỉnh và Trường tùy chỉnh này.

Cảm ơn.

Trả lời

4

Cập nhật (tương thích với WC 3+)

Sau lời giải thích của bạn trong bình luận của bạn dưới đây, tôi chỉ phát hiện ra rằng bạn đang sử dụng Essential Grid premium plugin(một plugin thương mại) để tạo ra một số lĩnh vực tùy chỉnh và các thuộc tính liên quan đến các sản phẩm wooCommerce của bạn.

Tại thời điểm này, Tôi không thể giúp, bởi vì tôi chưa bao giờ sử dụng plugin này trước đây, và tôi không biết nơi dữ liệu được lưu trữ trong plugin này, trong cơ sở dữ liệu.

Tôi nghĩ rằng bạn không thể sử dụng usuals WordPress/WooCommerce chức năng để có được dữ liệu này, và đó là lý do mà bạn sẽ không nhận được bất kỳ dữ liệu sử dụng như bình thường get_post_meta() ...

Cách tốt nhất để được trợ giúp là:
- để tìm kiếm/khám phá cơ sở dữ liệu của bạn cho dữ liệu trường tùy chỉnh đó.
- để tìm kiếm/yêu cầu trong Lưới thiết yếu chủ đề hỗ trợ tác giả plugin.


câu trả lời ban đầu của tôi:

Đối với các thuộc tính được định nghĩa trong các sản phẩm của bạn, sử dụng get_post_meta() chức năng với biến $product_id, bạn cần phải sử dụng nó này cách để lấy dữ liệu bạn muốn (đây là một mảng giá trị):

// getting the defined product attributes 
$product_attr = get_post_meta($product_id, '_product_attributes'); 

// displaying the array of values (just to test and to see output) 
echo var_dump($product_attr); 

Bạn cũng có thể sử dụng chức năng get_attributes()(nhiều hơn), theo cách này:

// Creating an object instance of the product 
$_product = new WC_Product($product_id); 

// getting the defined product attributes 
$product_attr = $_product->get_attributes(); 

// displaying the array of values (just to test and to see output) 
echo var_dump($product_attr); 

Tất cả các mã được kiểm tra và làm việc.

VỚI DOANH NGHIỆP Toán DỮ LIỆU được đặt trong COOKIES VÀ PHIÊN và bạn sẽ cần phải sử dụng WC()->cart cú pháp để lấy dữ liệu giỏ hàng và các mặt hàng

Vì vậy, bạn có thể sử dụng loại mã này để có được các mặt hàng (sản phẩm) trong giỏ hàng:

foreach (WC()->cart->get_cart() as $cart_item) { 
    $product = $cart_item['data']; 
    if(!empty($product)){ 

     // getting the defined product attributes 
     $product_attr = $_product->get_attributes(); 

     // displaying the attributes array of values (just to test and to see output) 
     echo var_dump($product_attr) . '<br>'; 
    } 
} 

Điều này sẽ hiển thị mảng thuộc tính của giá trị cho từng sản phẩm trong CART.


Một giải pháp dựa trên this thread, sử dụng wc_get_product_terms() bên trong đoạn mã tương tự để có được thuộc tính của bạn:

foreach (WC()->cart->get_cart() as $cart_item) { 
    $product = $cart_item['data']; 
    if(!empty($product)){ 

     // compatibility with WC +3 
     $product_id = method_exists($product, 'get_id') ? $product->get_id() : $product->id; 

     // Getting "height" product attribute 
     $myAttribute = array_shift(wc_get_product_terms($product_id, 'pa_height', array('fields' => 'names'))); 
     echo $myAttribute . '<br>'; 
    } 
} 

Tài liệu tham khảo:

+0

tuyệt vời, cảm ơn bạn! Tôi sẽ kiểm tra mã này ngay bây giờ và xem nếu những gì tôi cần :). Xin lỗi vì câu trả lời bị trì hoãn của tôi, chỉ đăng nhập lại trên –

+0

@StevenWright Không sao cả. Nếu bạn chỉ có thể cho tôi biết làm thế nào bạn có được lĩnh vực tùy chỉnh này và làm thế nào bạn lưu nó vào DB ... Cảm ơn – LoicTheAztec

+0

Xin lỗi, tôi là một chút nhầm lẫn với mã của bạn ở trên (tôi chỉ là một người mới bắt đầu PHP) - Tôi đã thêm đoạn mã bạn cung cấp, tuy nhiên, cả hai var_dumps được xuất ra cùng một mảng chính xác, không có giá trị thực tế nào cho các trường (ví dụ: chiều cao là 123 chẳng hạn). Với trường tùy chỉnh, chúng tôi đã phải tạo ra điều này bằng plugin 'Lưới thiết yếu' và sử dụng trình tạo siêu trường của chúng để nó sẽ phát độc đáo với plugin của chúng. Cảm ơn sự giúp đỡ của bạn cho đến thời điểm này :) –

Các vấn đề liên quan