ホームページ > バックエンド開発 > PHPチュートリアル > WooCommerce 4 で WooCommerce 製品にカスタム在庫ステータスを追加するにはどうすればよいですか?

WooCommerce 4 で WooCommerce 製品にカスタム在庫ステータスを追加するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-03 14:59:02
オリジナル
680 人が閲覧しました

How to Add Custom Stock Statuses to WooCommerce Products in WooCommerce 4 ?

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=&quot;pre-order&quot; style=&quot;background:transparent none;color:#33ccff;font-weight:700;line-height:1;&quot;>' . __( 'Pre order', 'woocommerce' ) . '</mark>';
            break;
        case 'contact_us':
            $stock_html = '<mark class=&quot;contact-us&quot; style=&quot;background:transparent none;color:#cc33ff;font-weight:700;line-height:1;&quot;>' . __( 'Contact us', 'woocommerce' ) . '</mark>';
            break;
    }

    return $stock_html;
}
add_filter( 'woocommerce_admin_stock_html', 'filter_woocommerce_admin_stock_html', 10, 2 );</code>
ログイン後にコピー

オプション: フックでカスタム在庫ステータスを使用する

次のことができます。 $product オブジェクトにアクセスできる場合、またはグローバル $product を使用できる場合は、フックでカスタム 在庫ステータスを使用します。

注:

  • 次の場合はグローバル $product を使用してください。 woocommerce_shop_loop_item_title フックや woocommerce_single_product_summary フックなど、$product オブジェクトへのアクセス権がありません。
  • woocommerce_get_price_html フックのように、デフォルトでコールバック関数に渡された場合は、$product オブジェクトにアクセスします。

以上がWooCommerce 4 で WooCommerce 製品にカスタム在庫ステータスを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート