如何在库存 WooCommerce 中添加下一个可用日期

How to add next available date in stock WooCommerce

我有这段代码,可以在缺货时添加下一个有货日期。我使用自定义字段添加了字段。

add_filter( 'woocommerce_get_availability_text', 'filter_product_availability_text', 10, 2);
function filter_product_availability_text( $availability, $product ) {
    $date_of_availability = get_post_meta( get_the_ID(), 'date_of_availability', true );

    if ( ! $product->is_in_stock() && ! empty($date_of_availability) ) {
        $availability .= '<span style="color:#e2401c;"><strong>- (' . __('Available from:', 'flatsome') . ' </strong>' . get_post_meta( get_the_ID(), 'date_of_availability', true ) . '!important' . ')</span>';
    }
    return $availability;
}

custom fields

有人可以帮我吗?

最终目标是在产品中有一个带有日期的字段,当达到缺货时需要打印出带有字段值的那一行 但是,如果我这样放置它:

add_filter( 'woocommerce_get_availability_text', 'filter_product_availability_text', 10, 2);
function filter_product_availability_text( $availability, $product ) {
    $date_of_availability = get_post_meta( get_the_ID(), 'date_of_availability', true );

    if ( ! $product->is_in_stock() && ! empty($date_of_availability) ) {
        $availability .= '<span style="color:#e2401c;"><strong>- (' . __('Available from:', 'flatsome') . ' </strong>' . get_post_meta( get_the_ID(), 'date_of_availability', true ) . ')</span>';
echo $availability
    }
   // return $availability;
}

然后它起作用了,但是由于某种原因它重复了,就像这样: repeating

此外,如果启用,尽管已禁用,它也会在每个产品上留下有货标签

您需要评论:

echo $availability

代码片段:

add_filter( 'woocommerce_get_availability_text', 'filter_product_availability_text', 10, 2);
function filter_product_availability_text( $availability, $product ) {
    $date_of_availability = '17-05-2022'; // Your custom data

    if ( ! $product->is_in_stock() && ! empty($date_of_availability) ) {
        $availability .= '<span style="color:#e2401c;"><strong>- (' . __('Available from:', 'flatsome') . ' </strong>' . $date_of_availability . ')</span>';
        //echo $availability
    }
    return $availability;
}

enter image description here

或者,在 WooCommerce > 设置 > 产品 > 库存下还有一个 built-in 设置 — 您可以设置何时应将其视为“低库存”,然后显示一条消息:

enter image description here

您可以使用 Loco Translate (https://wordpress.org/plugins/loco-translate/) 等免费翻译插件更改消息的措辞。

您的函数出现两次输出的原因是您在不修改或停止 woocommerce_get_availability 文本的 return 输出的情况下回显 $availability 值。

以下应该有效,因为它适用于 Storefront 主题:

function filter_product_availability_text( $availability, $product ) {

  $date_of_availability = $product->get_meta( 'date_of_availability' );

  if ( ! $product->is_in_stock() && $date_of_availability ) {
    $availability .= '- Available from: ';
    $availability .= $date_of_availability ;
  }

  return $availability;
}
add_filter( 'woocommerce_get_availability_text', 'filter_product_availability_text', 10, 2);

但是,如果上述方法失败,您可以使用动作挂钩输出。在您的情况下,过滤器可能会失败,因为 Bacola 开发人员选择对他们的代码执行某些操作。无论如何都应该输出:

function filter_product_availability_text() {
  global $product;

  $availability = '';
  $date_of_availability = $product->get_meta( 'date_of_availability' );

  if ( ! $product->is_in_stock() && $date_of_availability ) {
    $availability = '<div class="product-meta date-of-avail"><p>Available from: '. $date_of_availability .'</p></div>';
  }

  echo $availability;
}
add_action( 'woocommerce_single_product_summary', 'filter_product_availability_text' );

添加到您的 CSS 文件:

.product-meta p {
  color: #F00;
}