2014-11-05 24 views
8

Tôi khá mới với wordpress/woocommerce và chỉ mới bắt đầu phát bằng cách tạo plugin tùy chỉnh.Woocommerce - Cách kiểm tra loại sản phẩm trong plugin

Cho đến nay tôi đã thêm cài đặt woocommerce tùy chỉnh của mình qua api.

Tôi đã gặp sự cố khi tôi muốn thêm trường tùy chỉnh trên một sản phẩm trong tab dữ liệu sản phẩm.

tôi quản lý để hiển thị nó bằng cách sử dụng đoạn mã sau:

add_action('woocommerce_product_options_general_product_data', array($this, 'cuzd_general_fields')); 
add_action('woocommerce_process_product_meta', array($this, 'cuzd_general_fields_save')); 

Tuy nhiên bây giờ tôi cần phải kiểm tra xem loại sản phẩm rất đơn giản hoặc biến thể. tôi thử như sau:

$product = new WC_Product(get_the_ID()); 
     if($product->is_type('simple')) { 
      // 
} 

Tuy nhiên tôi nhận được một lỗi:

Fatal error: Class 'WC_Product' not found in .... 

Tôi có một cảm giác tốt Tôi đang cố gắng để bắt đầu lớp sản phẩm trước khi nó được gọi. Tôi rất có thể có toàn bộ định dạng của plugin lớp sai. Bất kỳ tài liệu đọc nào có hướng dẫn tốt/thực hành tốt nhất sẽ được đánh giá cao.

Nếu không, nếu điều trên là một sửa chữa đơn giản, vui lòng cho tôi biết.

Trả lời

11

Sự cố có thể là get_the_ID() không trả lại ID của sản phẩm.

$product_id = 10; // the ID of the product to check 
$_product = wc_get_product($product_id); 
if($_product->is_type('simple')) { 
// do stuff for simple products 
} else { 
// do stuff for everything else 
} 

Nếu $product_id là ID của một biến thể sau đó loại được trả về cho $_product sẽ variation.

Ngoài ra, bạn có thể kiểm tra global $product mà WooCommerce thiết lập. Mặc dù điều này sẽ không bao giờ là ID biến thể và sẽ là ID của sản phẩm biến phụ huynh.

+0

Đối với tôi ít nhất là loại sản phẩm biến thể là "biến", không phải "biến thể". Nó có thể đã thay đổi kể từ câu trả lời ban đầu nhưng tôi nghĩ rằng điều này đáng chú ý để tham khảo trong tương lai. – Tuure

+1

@Tuure Biến và biến thể đều tồn tại. Loại sản phẩm "biến" có nghĩa là sản phẩm gốc chứa nhiều sản phẩm "biến thể" cho trẻ em. Các biến thể không hiển thị dưới dạng các sản phẩm riêng biệt trong danh sách sản phẩm nhưng thực ra là các bài viết về sản phẩm của riêng chúng. – Berend

+0

Cảm ơn bạn đã làm rõ! – Tuure

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