WooCommerce 4 の WooCommerce 製品のカスタム在庫ステータス
WooCommerce 4 の製品にカスタム在庫ステータスを追加するプロセスは比較的簡単です。ただし、ステータスがフロントエンドとバックエンドで正しく表示されるようにするには、特定の関数を変更する必要があります。
カスタム在庫ステータスの追加
カスタム在庫ステータスを追加するには、次のコードを function.php ファイルに追加します:
<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>
このコードは、「予約注文」と「お問い合わせ」という 2 つの新しいステータスを追加します。
カスタム在庫の表示
フロントエンドでカスタム ステータスが正しく表示されるようにするには、次の変更を適用します:
<code class="php">// Availability text 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 ); // Availability CSS class 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">// Admin stock html 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>
オプション: フックでカスタム在庫ステータスを使用する
次のことができます。 $product オブジェクトにアクセスできる場合、またはグローバル $product を使用できる場合は、フックでカスタム 在庫ステータスを使用します。
注:
以上がWooCommerce 4 で WooCommerce 製品にカスタム在庫ステータスを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。