はじめに
WooCommerce 製品にカスタム在庫ステータスを追加すると、次のことが可能になります。利用可能かどうかについての詳細情報を提供してください。これにより、顧客のショッピング エクスペリエンスが向上し、混乱が軽減されます。
カスタム在庫ステータス オプション
カスタム在庫ステータス機能を実現するには、次の手順に従います。
カスタム在庫ステータスの追加:
<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>
フックでカスタム ステータスを使用:
オプション 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 中国語 Web サイトの他の関連記事を参照してください。