Cra*_*ray 1 php wordpress product stock woocommerce
我需要为 WooCommerce 产品页面上的库存通知提供额外的课程。目前,有两个不同的类in-stock和out-of-stock。但 WooCommerce 还有第三种选择。如果库存商品很少,则类别也为in-stock。如果有类似的东西就好了few-in-stock。
stock.php我检查了生成输出的模板文件。只有一行代码:
<p class="stock <?php echo esc_attr( $class ); ?>"><?php echo wp_kses_post( $availability ); ?></p>
Run Code Online (Sandbox Code Playgroud)
并且$class只有上面的两个选项。有什么函数可以用来添加第三个类吗?
目前我计算产品的库存是这样的:
$stock_count = $product->get_stock_quantity();
Run Code Online (Sandbox Code Playgroud)
并像这样添加我的新课程:
<p class="stock <?php echo esc_attr( $class ); ?> <?php if ( $stock_count <= '2' ) : ?>few-in-stock<?php endif; ?>"><?php echo wp_kses_post( $availability ); ?></p>
Run Code Online (Sandbox Code Playgroud)
但也许有更好的方法来做到这一点?!
这是挂钩在过滤器钩子中的函数woocommerce_get_stock_html,它允许您为低库存添加额外的库存通知(使用自定义 CSS):
add_filter( 'woocommerce_get_stock_html', 'filter_get_stock_html', 10, 2 );
function filter_get_stock_html( $html, $product ) {
// Low stock quantity amount
$low_stock_qty = 3;
$availability = $product->get_availability();
if ( ! empty( $availability['availability'] ) ) {
$class = esc_attr( $availability['class'] );
$avail_text = wp_kses_post( $availability['availability'] );
$stock_qty = $product->get_stock_quantity();
if( $stock_qty <= $low_stock_qty ){
$class .= ' few-in-stock';
$avail_text = __('Few in stock', 'woocommerce');
}
ob_start();
// Make your changes below
?>
<p class="stock <?php echo $class; ?>"><?php echo $avail_text; ?></p>
<?php
$html = ob_get_clean();
}
return $html;
}
Run Code Online (Sandbox Code Playgroud)
代码位于活动子主题(或活动主题)的 function.php 文件中。经过测试并有效。
可选择从常规产品库存设置中获取低库存量
如果您在
Settings>>中设置了“低库存阈值” ,您可以获取它并替换手动输入的值,替换以下行:ProductInventoryRun Code Online (Sandbox Code Playgroud)// Low stock quantity amount $low_stock_qty = 3;这样:
Run Code Online (Sandbox Code Playgroud)// Low stock quantity amount $low_stock_qty = get_option('woocommerce_notify_low_stock_amount');(感谢@Demian)
| 归档时间: |
|
| 查看次数: |
2677 次 |
| 最近记录: |