我想限制我的產品頁面上的庫存顯示(僅在前端)以限制過高的庫存。
我的問題類似于這篇文章:
考慮到以下條件,回傳值應替換產品頁面上顯示的庫存:
- 當一只股票大于 50 時,顯示 50 到 100 之間的亂數。
- 如果股票少于 50 只,則顯示股票的實際價值。
我被卡住了,我不知道我是否朝著正確的方向前進,非常感謝!
uj5u.com熱心網友回復:
您可以過濾woocommerce_get_availability_text并檢查庫存數量。
add_filter( 'woocommerce_get_availability_text', 'custom_availability_text', 10, 2 );
function custom_availability_text( $availability, $product ) {
if ( ! $product->is_in_stock() ) {
$availability = __( 'Out of stock', 'woocommerce' );
} elseif ( $product->managing_stock() && $product->is_on_backorder( 1 ) ) {
$availability = $product->backorders_require_notification() ? __( 'Available on backorder', 'woocommerce' ) : '';
} elseif ( ! $product->managing_stock() && $product->is_on_backorder( 1 ) ) {
$availability = __( 'Available on backorder', 'woocommerce' );
} elseif ( $product->managing_stock() ) {
$stock_amount = $product->get_stock_quantity();
// Check if Stock is less than 50.
if ( 50 > $stock_amount ) {
$availability = wc_format_stock_for_display( $product );
} else {
if ( false === ( $custom_availability = get_transient( 'custom_availability_text_' . $product->get_id() ) ) ) {
$random = wp_rand( 50, 100 );
$availability = sprintf( __( '%s in stock', 'woocommerce' ), wc_format_stock_quantity_for_display( $random, $product ) );
// Store for 6 hours. YMMV.
set_transient( 'custom_availability_text_' . $product->get_id(), $availability, 6 * HOUR_IN_SECONDS );
} else {
return $custom_availability;
}
}
} else {
$availability = '';
}
return $availability;
}
我已經更新了答案以包含 6 小時快取。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/364243.html
標籤:php WordPress的 求购 股票
