我找到了這個函式片段并將其插入我的網站。到目前為止效果很好,但我需要做一個小改動:我怎樣才能讓函式只顯示某個類別......?
這是代碼:
add_shortcode( 'my_purchased_products', 'products_bought_by_curr_user' );
function products_bought_by_curr_user() {
$current_user = wp_get_current_user();
if ( 0 == $current_user->ID ) return;
$customer_orders = get_posts( array(
'numberposts' => -1,
'meta_key' => '_customer_user',
'meta_value' => $current_user->ID,
'post_type' => wc_get_order_types(),
'post_status' => array_keys( wc_get_is_paid_statuses() ),
) );
if ( ! $customer_orders ) return;
$product_ids = array();
foreach ( $customer_orders as $customer_order ) {
$order = wc_get_order( $customer_order->ID );
$items = $order->get_items();
foreach ( $items as $item ) {
$product_id = $item->get_product_id();
$product_ids[] = $product_id;
}
}
$product_ids = array_unique( $product_ids );
$product_ids_str = implode( ",", $product_ids );
return do_shortcode("[products ids='$product_ids_str']");
}
有人可以把我推向正確的方向嗎?;-)
最好的問候安迪
uj5u.com熱心網友回復:
我誤讀了你的問題,所以現在是編輯時間。您將無法過濾 get_posts() 上的類別,因為您獲得的是訂單而不是產品(這就是我的解決方案不起作用的原因)。
為了實作您的過濾,您需要處理這部分:
foreach ( $items as $item ) {
$product_id = $item->get_product_id();
$product_ids[] = $product_id;
}
通過檢查產品是否包含您希望從中獲取產品的類別。像這樣的東西應該作業:
foreach ( $items as $item ) {
$product_id = $item->get_product_id();
$terms = get_the_terms( $product_id, 'product_cat' );
foreach ( $terms as $term ) {
if($term->slug === 'the_category_slug') {
$products_ids[] = $product_id;
}
}
}
我使用了這篇文章中的代碼How to get categories from a order at checkout in WooCommerce?
所以這里發生的是,在獲得 product_id 之后,我們使用 get_terms 獲得產品類別('product_cat' 引數是只獲得產品類別而不是產品標簽,因為類別和標簽都是術語)。
獲得術語后,我們回圈進入它并檢查每個是否是我們想要獲得的類別)。如果是,我們將產品 id 推送到結果陣列。
我們在這里使用類別 slug 但我們可以通過替換來使用 ID
if($term->slug === 'the_category_slug')
經過
if($term->term_id === 149)
其中 149 是您想要的類別的 ID
如果您需要更多幫助并再次祝您好運,請告訴我
uj5u.com熱心網友回復:
您可以通過產品 ID 獲取產品類別。現在,您可以使用 if 條件進行檢查。
如果類別 id 是 X ,那么作業也是如此。
uj5u.com熱心網友回復:
要回應您的新崩潰問題:
我建議您激活 WordPress 除錯(如果站點崩潰,它會在您的螢屏上顯示 PHP 錯誤)。您可以通過在專案根目錄(專案的頂級檔案夾)編輯 wp-config.php 檔案并將以下行放入其中:
define( 'WP_DEBUG', true );
(你可以把它放在任何地方)。然后,您應該了解您的網站崩潰的原因。
我還沒有時間測驗代碼,但我看到的是你忘記了 $ 和 ; 線上的字符
products_ids[] = $product_id
這應該成為
$products_ids[] = $product_id;
如果您在螢屏上遇到錯誤,請回傳并在此處發布:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/421558.html
標籤:
上一篇:SVG頂部的額外空間
