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

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

Nov 02, 2024 pm 07:11 PM

How to Add Custom Stock Status Functionality to WooCommerce 4 ?

WooCommerce にカスタム在庫ステータス機能を追加する方法 4

はじめに

WooCommerce 製品にカスタム在庫ステータスを追加すると、次のことが可能になります。利用可能かどうかについての詳細情報を提供してください。これにより、顧客のショッピング エクスペリエンスが向上し、混乱が軽減されます。

カスタム在庫ステータス オプション

カスタム在庫ステータス機能を実現するには、次の手順に従います。

  1. カスタム在庫ステータスの追加:

    <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">function filter_woocommerce_get_availability_text( $availability, $product ) {
        // Get stock status
        switch( $product-&gt;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-&gt;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>
    ログイン後にコピー
  3. 管理製品リストにカスタム ステータスを表示:

    <code class="php">function filter_woocommerce_admin_stock_html( $stock_html, $product ) {
        // Simple
        if ( $product-&gt;is_type( 'simple' ) ) {
            // Get stock status
            $product_stock_status = $product-&gt;get_stock_status();
        // Variable
        } elseif ( $product-&gt;is_type( 'variable' ) ) {
            foreach( $product-&gt;get_visible_children() as $variation_id ) {
                // Get product
                $variation = wc_get_product( $variation_id );
    
                // Get stock status
                $product_stock_status = $variation-&gt;get_stock_status();
            }
        }
    
        // Stock status
        switch( $product_stock_status ) {
            case 'pre_order':
                $stock_html = '&lt;mark class=&amp;quot;pre-order&amp;quot; style=&amp;quot;background:transparent none;color:#33ccff;font-weight:700;line-height:1;&amp;quot;&gt;' . __( 'Pre order', 'woocommerce' ) . '&lt;/mark&gt;';
            break;
            case 'contact_us':
                $stock_html = '&lt;mark class=&amp;quot;contact-us&amp;quot; style=&amp;quot;background:transparent none;color:#cc33ff;font-weight:700;line-height:1;&amp;quot;&gt;' . __( 'Contact us', 'woocommerce' ) . '&lt;/mark&gt;';
            break;
        }
    
        return $stock_html;
    }
    add_filter( 'woocommerce_admin_stock_html', 'filter_woocommerce_admin_stock_html', 10, 2 );</code>
    ログイン後にコピー
  4. フックでカスタム ステータスを使用:

    オプション 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-&gt;get_stock_status();
    
            // Use this line during testing, delete afterwards!
            echo '&lt;p style=&amp;quot;color:red;font-size:20px;&amp;quot;&gt;DEBUG INFORMATION = ' . $product_stock_status . '&lt;/p&gt;';
    
            // 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-&gt;get_stock_status();
    
            // Use this line during testing, delete afterwards!
            echo '&lt;p style=&amp;quot;color:red;font-size:20px;&amp;quot;&gt;DEBUG INFORMATION = ' . $product_stock_status . '&lt;/p&gt;';
    
            // 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

11ベストPHP URLショートナースクリプト(無料およびプレミアム)

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

Instagram APIの紹介

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelでフラッシュセッションデータを使用します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelテストでの簡略化されたHTTP応答のモッキング

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPのカール:REST APIでPHPカール拡張機能を使用する方法

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

LaravelのバックエンドでReactアプリを構築する:パート2、React

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

Codecanyonで12の最高のPHPチャットスクリプト

Laravelの通知 Laravelの通知 Mar 04, 2025 am 09:22 AM

Laravelの通知

See all articles