簡介
將產品添加自訂庫存狀態允許您提供有關其可用性的更多詳細資訊。這有助於改善客戶的購物體驗並減少混亂。
自訂庫存狀態選項
要實現自訂庫存狀態功能,請依照下列步驟操作:
新增自訂庫存狀態:
<code class="php">function filter_woocommerce_product_stock_status_options( $status ) { // Add new statuses $status['pre_order'] = __( 'Pre order', 'woocommerce' ); $status['contact_us'] = __( 'Contact us', 'woocommerce' ); return $status; } add_filter( 'woocommerce_product_stock_status_options', 'filter_woocommerce_product_stock_status_options', 10, 1 );</code>
更新可用性文字和類別:
<code class="php">function filter_woocommerce_get_availability_text( $availability, $product ) { // Get stock status switch( $product->get_stock_status() ) { case 'pre_order': $availability = __( 'Pre order', 'woocommerce' ); break; case 'contact_us': $availability = __( 'Contact us', 'woocommerce' ); break; } return $availability; } add_filter( 'woocommerce_get_availability_text', 'filter_woocommerce_get_availability_text', 10, 2 ); function filter_woocommerce_get_availability_class( $class, $product ) { // Get stock status switch( $product->get_stock_status() ) { case 'pre_order': $class = 'pre-order'; break; case 'contact_us': $class = 'contact-us'; break; } return $class; } add_filter( 'woocommerce_get_availability_class', 'filter_woocommerce_get_availability_class', 10, 2 );</code>
在管理產品清單上顯示自訂狀態:
<code class="php">function filter_woocommerce_admin_stock_html( $stock_html, $product ) { // Simple if ( $product->is_type( 'simple' ) ) { // Get stock status $product_stock_status = $product->get_stock_status(); // Variable } elseif ( $product->is_type( 'variable' ) ) { foreach( $product->get_visible_children() as $variation_id ) { // Get product $variation = wc_get_product( $variation_id ); // Get stock status $product_stock_status = $variation->get_stock_status(); } } // Stock status switch( $product_stock_status ) { case 'pre_order': $stock_html = '<mark class="pre-order" style="background:transparent none;color:#33ccff;font-weight:700;line-height:1;">' . __( 'Pre order', 'woocommerce' ) . '</mark>'; break; case 'contact_us': $stock_html = '<mark class="contact-us" style="background:transparent none;color:#cc33ff;font-weight:700;line-height:1;">' . __( 'Contact us', 'woocommerce' ) . '</mark>'; break; } return $stock_html; } add_filter( 'woocommerce_admin_stock_html', 'filter_woocommerce_admin_stock_html', 10, 2 );</code>
在Hook 中使用自訂狀態:
選項1: 使用全域$product
<code class="php">function woocommerce_my_callback() { // Get the global product object global $product; // Is a WC product if ( is_a( $product, 'WC_Product' ) ) { // Get stock status $product_stock_status = $product->get_stock_status(); // Use this line during testing, delete afterwards! echo '<p style="color:red;font-size:20px;">DEBUG INFORMATION = ' . $product_stock_status . '</p>'; // Compare if ( $product_stock_status == 'My custom stock status' ) { // Etc.. } } } add_action( 'woocommerce_shop_loop_item_title', 'woocommerce_my_callback', 10 ); add_action( 'woocommerce_single_product_summary', 'woocommerce_my_callback', 10 );</code>
選項2: 將$product 傳遞給回呼
<code class="php">function filter_woocommerce_get_price_html( $price, $product ) { // Is a WC product if ( is_a( $product, 'WC_Product' ) ) { // Get stock status $product_stock_status = $product->get_stock_status(); // Use this line during testing, delete afterwards! echo '<p style="color:red;font-size:20px;">DEBUG INFORMATION = ' . $product_stock_status . '</p>'; // Compare if ( $product_stock_status == 'My custom stock status' ) { // Etc.. // $price .= ' my text'; } } return $price; } add_filter( 'woocommerce_get_price_html', 'filter_woocommerce_get_price_html', 10, 2 );</code>
結論
向WooCommerce 添加自訂庫存狀態可為您的客戶提供更大的靈活性和資訊。透過執行這些步驟,您可以輕鬆擴展 WooCommerce 的預設功能並增強使用者的購物體驗。
以上是如何為 WooCommerce 4 新增自訂庫存狀態功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!