首页 > 后端开发 > 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 中的产品添加自定义库存状态是一个相对简单的过程。但需要修改具体功能,以保证前后端正确显示状态。

添加自定义库存状态

添加自定义库存状态,添加将以下代码添加到您的functions.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>
登录后复制

此代码添加了两个新状态:“预订”和“联系我们”。

显示自定义库存可用性

为了确保自定义状态在前端正确显示,请应用以下更改:

<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>
登录后复制

可选:在 Hooks 中使用自定义库存状态

您可以当您有权访问 $product 对象或可以使用全局 $product 时,请在钩子中使用自定义库存状态。

注意:

  • 在以下情况下使用全局 $product您无权访问 $product 对象,例如在 woocommerce_shop_loop_item_title 和 woocommerce_single_product_summary 挂钩中。
  • 如果默认传递给回调函数,则访问 $product 对象,例如在 woocommerce_get_price_html 挂钩中。

以上是如何在 WooCommerce 4 中向 WooCommerce 产品添加自定义库存状态?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板