In Woocommerce에서 모든 변형의 총 재고를 가져옵니다.
저는 우커머스에서 가변 제품의 모든 변형의 총 재고를 보여주고 싶습니다.각 제품 변동의 재고는 제품 변동 수준에서 관리됩니다.
가변 제품에 사용할 경우:
global $product;
echo $product->get_stock_quantity();
저는 이 제품의 모든 변형의 총 재고를 파악하지 못합니다.
In Woocommerce에서 모든 변형의 총 재고를 구할 수 있나요?
다음 사용자 정의 기능은 변동 상품(전용)에 대한 모든 상품 변동 재고 수량의 합을 표시합니다.
가변 제품의 모든 하위 변형의 합을 만드는 매우 가벼운 SQL 쿼리를 사용합니다.
참고: 재고는 제품 변동 수준에서 관리해야 합니다.
function wc_get_variable_product_stock_quantity( $output = 'raw', $product_id = 0 ){
global $wpdb, $product;
// Get the product ID (can be defined)
$product_id = $product_id > 0 ? $product_id : get_the_id();
// Check and get the instance of the WC_Product Object
$product = is_a( $product, 'WC_Product' ) ? $product : wc_get_product($product_id);
// Only for variable product type
if( $product->is_type('variable') ){
// Get the stock quantity sum of all product variations (children)
$stock_quantity = $wpdb->get_var("
SELECT SUM(pm.meta_value)
FROM {$wpdb->prefix}posts as p
JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id
WHERE p.post_type = 'product_variation'
AND p.post_status = 'publish'
AND p.post_parent = '$product_id'
AND pm.meta_key = '_stock'
AND pm.meta_value IS NOT NULL
");
// Preparing formatted output
if ( $stock_quantity > 0 ) {
$html = '<p class="stock in-stock">'. sprintf( __("%s in stock", "woocommerce"), $stock_quantity ).'</p>';
} else {
if ( is_numeric($stock_quantity) )
$html = '<p class="stock out-of-stock">' . __("Out of stock", "woocommerce") . '</p>';
else
$html = '';
}
// Different output options
if( $output == 'echo_html' )
echo $html;
elseif( $output == 'return_html' )
return $html;
else
return $stock_quantity;
}
}
코드가 작동합니다.활성 하위 테마(또는 활성 테마)의 php 파일입니다.테스트를 거쳐 작동합니다.
사용법(3건):
1) php 코드 어디에서나 재고 수량을 확보할 수 있습니다 (다이나믹에서 $product_id
):
$stock_quantity = wc_get_variable_product_stock_quantity( 'raw', $product_id );
2) 상점 및 보관 페이지에 표시(가격 범위 예제에서):
add_action( 'woocommerce_after_shop_loop_item_title', 'display_variable_product_stock_quantity', 20 );
function display_variable_product_stock_quantity(){
wc_get_variable_product_stock_quantity( 'echo_html' );
}
코드가 작동합니다.활성 하위 테마(또는 활성 테마)의 php 파일입니다.
3) 단일 제품 페이지로 표시(가격 범위 예하에서):
add_action( 'woocommerce_single_product_summary', 'display_variable_product_stock_quantity', 15 );
function display_variable_product_stock_quantity(){
wc_get_variable_product_stock_quantity( 'echo_html' );
}
코드가 작동합니다.활성 하위 테마(또는 활성 테마)의 php 파일입니다.
상품이 변동상품이 아니거나 상품수준에서 재고관리가 가능한 경우 총 재고수량을 반환하는 기능입니다.
그렇지 않으면 각 변동에 대한 총 재고량을 계산합니다.
예를 들어 functions.php에 이 함수를 넣을 수 있습니다.이렇게 부르죠.
<?php
global $product;
$stockQuantity = get_total_combined_stock_quantity($product);
?>
function get_total_combined_stock_quantity($product)
{
if (!$product->is_type('variable')) {
return $product->get_stock_quantity();
}
//Stock management is enabled at product level
if ($product->managing_stock()) {
return $product->get_stock_quantity();
}
$total = 0;
if ($product->is_type('variable')) {
foreach ($product->get_visible_children() as $variationId) {
$variation = wc_get_product($variationId);
$total += $variation->get_stock_quantity();
}
}
return $total;
}
add_action ( 'woocommerce_before_add_to_cart_button', 'get_selected_stock' );함수 get_selected_stock {글로벌 $ 제품 if ($product->is_type( 'variable' )){$208_vari = $product->get_available_variations();각 항목에 대해 $($key_vari as $key => $value){$vari_id = $value['vari_id'];$vari_colr = $value['properties'][a]tribute_pa_pa'];$vari_obj = 새로운 WC_Product_variation($vari_id);$vari_stock = $vari_obj->get_stock_get; echo $vari_colr. ": " . $vari_stock. "; }}
이 코드를 기능에 붙여 넣습니다.당신의 테마의 php와 당신의 작업이 끝날 것입니다.
언급URL : https://stackoverflow.com/questions/52857156/get-the-total-stock-of-all-variations-from-a-variable-product-in-woocommerce
'programing' 카테고리의 다른 글
Concat 스크립트 순서대로 Gulp (0) | 2023.09.13 |
---|---|
GCC linaro 컴파일러가 "알 수 없는 유형 name size_t" 오류를 던집니다. (0) | 2023.09.13 |
파이썬에서 ip가 네트워크에 있는지 확인하려면 어떻게 해야 합니까? (0) | 2023.09.08 |
create if not exists view? (0) | 2023.09.08 |
Elixir Ecto SQL comments /* comment /* 선택 1; (0) | 2023.09.08 |