【问题标题】:Output custom code In a specific WooCommerce product page if out of stock如果缺货,在特定的 WooCommerce 产品页面中输出自定义代码
【发布时间】:2017-07-08 17:29:50
【问题描述】:

我正在尝试检查用户是否在特定产品页面上,然后产品是否缺货。如果产品没有库存,我想显示一个可选的促销图像,将另一个产品添加到购物车。

使用当前代码,我得到一个错误,当页面到达这个 sn-p 时页面停止渲染。

现在我的代码如下:

<?php if (! $product->is_in_stock() && is_single('12005') ) { ?> 

        <div id="oos-promo">
            <a href="https://example.com/?add-to-cart=11820&quantity=1">
                <img src="https://example.com/wp-content/uploads/2017/07/product.jpg" alt="Promo" class="img-responsive">
            </a>
        </div>

    <?php } ?>

我将此代码放在content-single-product.php 文件中,该文件直接嵌套在此模板文件的"entry-summary" 元素内。

想法?

【问题讨论】:

    标签: php wordpress woocommerce product stock


    【解决方案1】:

    想通了!我的错误是没有在 if 语句之前拉入全局 $product 变量,请参见下面的最终代码:

    <?php global $product; if (! $product->is_in_stock() && is_single('12005') ) { ?> 
    
        <div id="oos-promo">
            <a href="https://example.com/?add-to-cart=11820&quantity=1">
                <img src="https://example.com/wp-content/uploads/2017/07/product.jpg" alt="Promo" class="img-responsive">
            </a>
        </div>
    
    <?php } ?>
    

    【讨论】:

    • 我们同时找到了避免此错误的方法...但是$product-&gt;get_id() == 12005is_single('12005') 更好,并且使用挂钩函数比自定义模板避免更新更好的选择更改模板时的流程...无论如何,我都赞成您的答案和问题...您应该接受其中一个答案为“好”:请阅读@ 987654321@ ...如果您愿意,也可以投票给我。谢谢
    【解决方案2】:

    您应该将代码嵌入到一个挂在 woocommerce_single_product_summary 动作挂钩中的函数中,而不是覆盖 WooCommerce 模板,这样:

    add_action( 'woocommerce_single_product_summary', 'out_of_stock_custom_code', 3 );
    function out_of_stock_custom_code() {
        // Including the WC_Product object
        global $product;
    
        if ( ! $product->is_in_stock() && $product->get_id() == 12005 ) {
            ?>
            <div id="oos-promo">
                <a href="?add-to-cart=11820&quantity=1">
                    <img src="https://example.com/wp-content/uploads/2017/07/product.jpg" alt="Promo" class="img-responsive">
                </a>
            </div>
            <?php
        }
    }
    

    代码进入活动子主题(或主题)的任何 php 文件或任何插件 php 文件中。

    此代码已经过测试并且可以工作。

    【讨论】:

    • 非常好的方法!假设如果产品缺货,我想删除 woocommerce_template_single_price 功能,您的回答是否是正确的做法,还是我应该考虑其他一些方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 2020-11-05
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 2018-05-22
    • 2021-03-23
    相关资源
    最近更新 更多