【问题标题】:Display custom field value in WooCommerce single product pages via hook通过钩子在 WooCommerce 单个产品页面中显示自定义字段值
【发布时间】:2021-03-04 00:46:46
【问题描述】:

我还不太了解 PHP,但我正在尝试使用 woocommerce_before_add_to_cart_form 挂钩将一些内容放在我的单个产品页面中。

我成功地制作了打印我的文本和我的产品总销售额的代码。代码如下所示:

add_action( 'woocommerce_before_add_to_cart_form', 'production_time', 11 );
  
function production_time() {
   global $product;
   $production_time = $product->get_total_sales();
   if ( $production_time ) echo '<p class="ri ri-clock">' . sprintf( __( ' Productietijd: %s', 'woocommerce' ), $production_time ) . '</p>';
}

但我希望显示我的产品自定义字段值,而不是产品总销售额。

这是我添加的自定义字段fullfilment_production_time自定义字段:

我尝试将get_total_sales() 更改为get_fullfilment_production_time(),但没有成功。

我也试过这个:

add_action( 'woocommerce_before_add_to_cart_form', 'production_time', 11 );
  
function production_time() {
   global $product;
   $production_time = $product->get_post_meta( get_the_ID(), 'fullfilment_production_time', true );
   if ( $production_time ) echo '<p class="ri ri-clock">' . sprintf( __( ' Productietijd: %s', 'woocommerce' ), $production_time ) . '</p>';
}

有什么建议吗?

【问题讨论】:

    标签: php function woocommerce hook-woocommerce custom-fields


    【解决方案1】:

    当您以错误的方式使用get_post_meta() 函数时,您的代码中存在错误。您可以使用不同的方式获取产品自定义字段值:

    1. WooCommerce 方式使用WC_Data 方法get_meta() 这种方式:
    add_action( 'woocommerce_before_add_to_cart_form', 'production_time', 11 ); 
    function production_time() {
        global $product;
    
        $production_time = $product->get_meta( 'fullfilment_production_time' );
    
        if ( ! empty($production_time) ) {
            echo '<p class="ri ri-clock">' . sprintf( __( ' Productietijd: %s', 'woocommerce' ), $production_time ) . '</p>';
        }
    }
    
    1. 使用 get_post_meta() 函数的旧 Wordpress 方式是这样的:
    add_action( 'woocommerce_before_add_to_cart_form', 'production_time', 11 ); 
    function production_time() {
        global $product;
    
        $production_time = get_post_meta( $product->get_id(), 'fullfilment_production_time', true ); 
       
        if ( ! empty($production_time) ) {
            echo '<p class="ri ri-clock">' . sprintf( __( ' Productietijd: %s', 'woocommerce' ), $production_time ) . '</p>';
        }
    }
    
    1. 对于Advanced custom fields plugin using get_field() 函数这样:
    add_action( 'woocommerce_before_add_to_cart_form', 'production_time', 11 ); 
    function production_time() {
        global $product;
    
        $production_time = get_field( 'fullfilment_production_time', $product->get_id() ); 
       
        if ( ! empty($production_time) ) {
            echo '<p class="ri ri-clock">' . sprintf( __( ' Productietijd: %s', 'woocommerce' ), $production_time ) . '</p>';
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-09
      • 1970-01-01
      • 2020-12-04
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 2020-12-07
      相关资源
      最近更新 更多