第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如果所有變體都缺貨,則從目錄中隱藏 WooCommerce 可變產(chǎn)品

如果所有變體都缺貨,則從目錄中隱藏 WooCommerce 可變產(chǎn)品

PHP
HUX布斯 2023-09-08 10:29:56
在我的 WooCommerce 商店中,有一些顏色各異的產(chǎn)品。庫(kù)存的更新是變化級(jí)別的,因?yàn)橥獠吭磳⒚糠N顏色視為不同的產(chǎn)品。現(xiàn)在我遇到一個(gè)問(wèn)題,可變產(chǎn)品的所有變體都缺貨,但產(chǎn)品本身仍然顯示在網(wǎng)上商店的目錄中。即使我打開(kāi)設(shè)置“隱藏目錄中缺貨的商品”。但此設(shè)置僅適用于沒(méi)有變體的產(chǎn)品。當(dāng)您點(diǎn)擊某個(gè)型號(hào)全部缺貨的產(chǎn)品時(shí),它會(huì)顯示:“該產(chǎn)品目前缺貨且不可用?!?。WooCommerce 中是否有一個(gè)設(shè)置也可以隱藏我的目錄中的這些產(chǎn)品?或者我是否必須制作一個(gè)額外的腳本來(lái)檢查每個(gè)可變產(chǎn)品并將其置于最高水平缺貨?我在可變產(chǎn)品上嘗試過(guò)的代碼沒(méi)有效果:$out_of_stock_staus = 'outofstock';// 1. Updating the stock quantityupdate_post_meta($product_id, '_stock', 0);// 2. Updating the stock statusupdate_post_meta( $product_id, '_stock_status', wc_clean( $out_of_stock_staus ) );// 3. Updating post term product visibilitywp_set_post_terms( $product_id, $out_of_stock_staus, 'product_visibility', true ); 如果所有變體都缺貨,如何從目錄中隱藏 WooCommerce 可變產(chǎn)品?
查看完整描述

1 回答

?
桃花長(zhǎng)相依

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊

注意:從 WooCommerce 3 和 4 開(kāi)始,最好使用WC_Product?可用的方法,因?yàn)橛行碌淖远x表和緩存數(shù)據(jù)需要更新。

有一種方法可以顯示或隱藏產(chǎn)品目錄中的可變產(chǎn)品(有點(diǎn)復(fù)雜)。

1)。一個(gè)輕量級(jí)條件函數(shù),用于檢查可變產(chǎn)品的所有產(chǎn)品變體是否“缺貨”:

// Conditional function to check if a variable product has at least a variation in stock

function is_wc_variable_product_in_stock( $product_id ){

? ? global $wpdb;


? ? $count = $wpdb->get_var( $wpdb->prepare( "

? ? ? ? SELECT COUNT(ID)

? ? ? ? FROM {$wpdb->posts} p

? ? ? ? INNER JOIN {$wpdb->postmeta} pm

? ? ? ? ? ? ON p.ID? ? ? ? ? ?=? pm.post_id

? ? ? ? WHERE p.post_type? ? ?=? 'product_variation'

? ? ? ? ? ? AND p.post_status =? 'publish'

? ? ? ? ? ? AND p.post_parent =? %d

? ? ? ? ? ? AND pm.meta_key? ?=? '_stock_status'

? ? ? ? ? ? AND pm.meta_value != 'outofstock'

? ? ", $product_id ) );


? ? return $count > 0 ? true : false;

}

代碼位于活動(dòng)子主題(或活動(dòng)主題)的 function.php 文件中。下面需要這個(gè)函數(shù),所以保留它。


2)。一個(gè)自定義函數(shù),將檢查所有可變產(chǎn)品(及其所有變體庫(kù)存),添加自定義元數(shù)據(jù)(此函數(shù)將僅使用一次,然后刪除)。


// Function that will check the variations stock for each variable products adding custom meta data

function check_and_update_all_variable_products(){

? ? // Only for admins

? ? if( ! current_user_can('edit_products')) return;


? ? // get all variable product Ids

? ? $variable_products_ids = wc_get_products( array(

? ? ? ? 'limit'? => -1,

? ? ? ? 'status' => 'publish',

? ? ? ? 'type'? ?=> 'variable',

? ? ? ? 'return' => 'ids',

? ? ));


? ? // Loop through variable products

? ? foreach( $variable_products_ids as $variable_id ) {

? ? ? ? // Check if all the product variations are "out of stock" or not

? ? ? ? $value? ? ? = is_wc_variable_product_in_stock( $variable_id ) ? '0' : '1';


? ? ? ? $meta_value = (string) get_post_meta( $variable_id, '_all_variations_outofstock', true );


? ? ? ? if ( $value !== $meta_value ) {

? ? ? ? ? ? // Create/Udpate custom meta data

? ? ? ? ? ? update_post_meta( $variable_id, '_all_variations_outofstock', $value );

? ? ? ? }

? ? }

}

// Run the function: browse any page of your web site

check_and_update_all_variable_products();

代碼位于活動(dòng)子主題(或活動(dòng)主題)的 function.php 文件中。保存后,瀏覽您網(wǎng)站的任何頁(yè)面即可運(yùn)行此功能。然后將其刪除。


3)?,F(xiàn)在,一個(gè)鉤子函數(shù)將隱藏您的變量產(chǎn)品,這些產(chǎn)品的變體都是“缺貨”,來(lái)自 WooCommerce 目錄和單個(gè)產(chǎn)品頁(yè)面:


// Hide product variations which variations are all "out of stock"

add_action( 'woocommerce_product_query', 'hide_variable_products_with_all_outofstock_variations', 10, 2 );

function hide_variable_products_with_all_outofstock_variations( $q, $query ) {

? ? // Get any existing meta query

? ? $meta_query = $q->get( 'meta_query');


? ? // Define an additional meta query

? ? $meta_query['relation'] = 'OR';

? ? $meta_query[] = array(

? ? ? ? 'key'? ? ?=> '_all_variations_outofstock',

? ? ? ? 'value'? ?=> '1',

? ? ? ? 'compare' => '!=',

? ? );

? ? $meta_query[] = array(

? ? ? ? 'key'? ? ?=> '_all_variations_outofstock',

? ? ? ? 'compare' => 'NOT EXISTS',

? ? );


? ? // Set the new merged meta query

? ? $q->set( 'meta_query', $meta_query );

}


// Hide "Out of stock" variable product single pages

add_action( 'template_redirect', 'hide_out_of_stock_variable_product_single_pages' );

function hide_out_of_stock_variable_product_single_pages(){

? ? if( get_post_meta( get_the_id(), '_all_variations_outofstock', true ) ) {

? ? ? ? // Redirect to Shop page

? ? ? ? wp_redirect( wc_get_page_permalink( 'shop' ) );

? ? ? ? exit();

? ? }

}

代碼位于活動(dòng)子主題(或活動(dòng)主題)的 function.php 文件中。經(jīng)過(guò)測(cè)試并有效。


4). 添加/更新產(chǎn)品變體庫(kù)存自定義元:在管理單一產(chǎn)品頁(yè)面上,檢查可變產(chǎn)品庫(kù)存狀態(tài)并更新自定義元數(shù)據(jù)(以及當(dāng)付款訂單更新產(chǎn)品庫(kù)存時(shí)):


// Custom function that update the parent variable product stock custom meta data

function update_parent_variable_product_stock_custom_meta( $product_var ) {

? ? if( ! is_a($product_var, 'WC_Product') ) {

? ? ? ? $product = wc_get_product( $product_var );

? ? } else { $product = $product_var; }


? ? if ( $product->is_type('variation') ) {

? ? ? ? // Get the parent product id from product variation

? ? ? ? $product_id = (int) $product->get_parent_id();

? ? } elseif ( $product->is_type('variable') ) {

? ? ? ? $product_id = (int) $product->get_id();

? ? } else {

? ? ? ? return; // Exit

? ? }


? ? // Check if all the product variations are "out of stock" or not

? ? $value = is_wc_variable_product_in_stock( $product_id ) ? '0' : '1';


? ? // add/Udpate custom meta data

? ? update_post_meta( $variable_id, '_all_variations_outofstock', $value );

}


// Update variable product stock custom meta data on admin single product pages

add_action( 'woocommerce_process_product_meta_variable', 'update_variable_product_stock_custom_meta_data' );

function update_product_variable_stock_custom_meta_data ( $product_id ) {

? ? update_parent_variable_product_stock_custom_meta( $product_id );

}


// On processed update product stock event (Like on orders)

add_action( 'woocommerce_updated_product_stock', 'wc_updated_product_stock_callback' );

function wc_updated_product_stock_callback ( $product_id ) {

? ? update_parent_variable_product_stock_custom_meta( $product_id );

}

代碼位于活動(dòng)子主題(或活動(dòng)主題)的 function.php 文件中。經(jīng)過(guò)測(cè)試并有效。


5)。以編程方式更改產(chǎn)品庫(kù)存狀態(tài)并添加/更新產(chǎn)品變體庫(kù)存自定義元(您重新訪問(wèn)的代碼,但適用于產(chǎn)品變體甚至簡(jiǎn)單的產(chǎn)品):


$stock_status = 'outofstock';


// Get an instance of WC_Product Object from the product ID (product variation)

$product = wc_get_product( $product_id );


// 1. Updating the stock quantity

$product->set_stock_quantity(0);


// 2. Updating the stock status (and "product_visibility" related term )

$product->set_stock_status($stock_status);


// 3. Save product data and refresh cached data

$product->save();


// Update parent variable product stock custom meta data

update_parent_variable_product_stock_custom_meta( $product );


查看完整回答
反對(duì) 回復(fù) 2023-09-08
  • 1 回答
  • 0 關(guān)注
  • 182 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)