WooCommerce 如何检查产品是否有货
WooCommerce how to check if the product is in stock
我认为有一个很简单的解决方案:
在 WooCommerce 中,我想将我的交货时间过滤器应用于单个产品,但前提是它是 available/in stock
。我在检查产品库存时遇到错误。
function filter_woocommerce_germanized_delivery_time_html( $str_replace, $html ) {
global $product;
if( $product->is_in_stock() ) {
echo '<p class="wc-gzd-additional-info delivery-time-info">';
echo $str_replace;
echo '</p>';
echo '<p class="wc-gzd-additional-info"><a href="https://xyz.at/info/lieferzeiten/" target="_blank"><i class="fas fa-shipping-fast"></i> EU-Lieferzeiten</a></p></span>';
}
}
// add the filter
add_filter( 'woocommerce_germanized_delivery_time_html', 'filter_woocommerce_germanized_delivery_time_html', 10, 2 );
我也试过:
if($product->get_stock_quantity()>0)
但类似的错误如:
"Uncaught Error: Call to a member function is_in_stock() on null.."
感谢您的帮助!
此致,
菲利克斯
错误告诉您您在 null
值上使用了函数,这意味着它找不到 $product
变量。
不确定此 woocommerce_germanized_delivery_time_html
过滤器挂钩来自何处以及您在何处使用 global $product
,但您可以使用以下代码段来获取产品。
global $post;
$product = wc_get_product($post->ID);
现在你的整个代码应该是这样的:
add_filter( 'woocommerce_germanized_delivery_time_html', 'filter_woocommerce_germanized_delivery_time_html', 10, 2 );
function filter_woocommerce_germanized_delivery_time_html($str_replace, $html)
{
global $post;
$product = wc_get_product($post->ID);
if ($product->is_in_stock()) {
echo '<p class="wc-gzd-additional-info delivery-time-info">';
echo $str_replace;
echo '</p>';
echo '<p class="wc-gzd-additional-info">';
echo '<a href="https://xyz.at/info/lieferzeiten/" target="_blank"><i class="fas fa-shipping-fast"></i> EU-Lieferzeiten</a>';
echo '</p>';
} else{
return $str_replace;
}
}
或者您可以这样获取库存数量:
add_filter( 'woocommerce_germanized_delivery_time_html', 'filter_woocommerce_germanized_delivery_time_html', 10, 2 );
function filter_woocommerce_germanized_delivery_time_html($str_replace, $html)
{
global $post;
$stock_quantity = get_post_meta($post->ID, '_stock', true);
if ($stock_quantity > 0) {
echo '<p class="wc-gzd-additional-info delivery-time-info">';
echo $str_replace;
echo '</p>';
echo '<p class="wc-gzd-additional-info">';
echo '<a href="https://xyz.at/info/lieferzeiten/" target="_blank"><i class="fas fa-shipping-fast"></i> EU-Lieferzeiten</a>';
echo '</p>';
} else {
return $str_replace;
}
}
如果你能让它工作,请告诉我!
我认为有一个很简单的解决方案:
在 WooCommerce 中,我想将我的交货时间过滤器应用于单个产品,但前提是它是 available/in stock
。我在检查产品库存时遇到错误。
function filter_woocommerce_germanized_delivery_time_html( $str_replace, $html ) {
global $product;
if( $product->is_in_stock() ) {
echo '<p class="wc-gzd-additional-info delivery-time-info">';
echo $str_replace;
echo '</p>';
echo '<p class="wc-gzd-additional-info"><a href="https://xyz.at/info/lieferzeiten/" target="_blank"><i class="fas fa-shipping-fast"></i> EU-Lieferzeiten</a></p></span>';
}
}
// add the filter
add_filter( 'woocommerce_germanized_delivery_time_html', 'filter_woocommerce_germanized_delivery_time_html', 10, 2 );
我也试过:
if($product->get_stock_quantity()>0)
但类似的错误如:
"Uncaught Error: Call to a member function is_in_stock() on null.."
感谢您的帮助!
此致, 菲利克斯
错误告诉您您在 null
值上使用了函数,这意味着它找不到 $product
变量。
不确定此 woocommerce_germanized_delivery_time_html
过滤器挂钩来自何处以及您在何处使用 global $product
,但您可以使用以下代码段来获取产品。
global $post;
$product = wc_get_product($post->ID);
现在你的整个代码应该是这样的:
add_filter( 'woocommerce_germanized_delivery_time_html', 'filter_woocommerce_germanized_delivery_time_html', 10, 2 );
function filter_woocommerce_germanized_delivery_time_html($str_replace, $html)
{
global $post;
$product = wc_get_product($post->ID);
if ($product->is_in_stock()) {
echo '<p class="wc-gzd-additional-info delivery-time-info">';
echo $str_replace;
echo '</p>';
echo '<p class="wc-gzd-additional-info">';
echo '<a href="https://xyz.at/info/lieferzeiten/" target="_blank"><i class="fas fa-shipping-fast"></i> EU-Lieferzeiten</a>';
echo '</p>';
} else{
return $str_replace;
}
}
或者您可以这样获取库存数量:
add_filter( 'woocommerce_germanized_delivery_time_html', 'filter_woocommerce_germanized_delivery_time_html', 10, 2 );
function filter_woocommerce_germanized_delivery_time_html($str_replace, $html)
{
global $post;
$stock_quantity = get_post_meta($post->ID, '_stock', true);
if ($stock_quantity > 0) {
echo '<p class="wc-gzd-additional-info delivery-time-info">';
echo $str_replace;
echo '</p>';
echo '<p class="wc-gzd-additional-info">';
echo '<a href="https://xyz.at/info/lieferzeiten/" target="_blank"><i class="fas fa-shipping-fast"></i> EU-Lieferzeiten</a>';
echo '</p>';
} else {
return $str_replace;
}
}
如果你能让它工作,请告诉我!