如果WooCommerce中的产品缺货,请将自定义类添加到链接

时间:2017-08-25 18:30:15

标签: php wordpress woocommerce shortcode product

在WooCommerce中,如果产品缺货,您知道如何将类添加到var sheetNew = ssNew.getActiveSheet(); var rangeNew = sheet.getRange(originalRangeNotation); range.setValues(sourceData); html元素(产品链接)吗?

基本上,我在页面上有产品链接,每个链接都转到特定产品。我想在产品的链接中添加“oos”类,如果该产品缺货的话。然后我可以用不同的方式设置这些链接的样式。

更多信息: https://jsfiddle.net/Garconis/qtvkxkga/

我正在创建一个SVG地图。每个部分/路径将链接到特定产品。如果链接到的产品缺货,则应添加“oos”类(以便不再显示该部分)。

我不反对使用某种短代码,如果这会有所帮助。但是短代码需要能够包装每个独特的SVG路径。

有货:

<a>

缺货:

<svg>
    <a href="https://example.com/?p=332">
        <path></path>
    </a>
</svg>

注意,在URL中,我也可以使用产品的ID,如果这有助于PHP找到相应的项目(而不是使用通常的slug URL)。

1 个答案:

答案 0 :(得分:1)

最简单的方法应该是为html <a>标记构建一个自定义函数短代码,其中包含产品链接和其他类,当它缺货时#34;

这是功能代码:

if( !function_exists('custom_shortcode_svg_product_link') ) {

    function custom_shortcode_svg_product_link( $atts, $content = null ) {

        // Shortcode Attributes
        $atts = shortcode_atts(
            array(
                'id' => '',
            ),
            $atts, 'svg_product_link'
        );

        $product_id = $atts['id'];
        // Get an instance of the WC_Product object
        $product = wc_get_product( $product_id );
        // Display the class "oos" when product is out of stock
        $class = $product->is_in_stock() ? '"' : '" class="oos"';
        // The product link
        $product_link = $product->get_permalink();

        // The output
        return '<a href="'.$product_link.$class.'>'.$content.'</a>';
    }
    add_shortcode( 'svg_product_link', 'custom_shortcode_svg_product_link' );
}

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。

在WooCommerce 3+上测试并输出所需的html。

使用示例 (针对您的情况)

注意:我对SVG文件和html格式完全不熟悉,所以我希望它能与<svg><path></path></svg>一起使用。

/*
 * @ id (the product ID argument)
 */
<svg>
    [svg_product_link id="332"]
        <path></path>
    [/svg_product_link]
    </a>
</svg>