通过挂钩在 WooCommerce 单个产品页面中显示自定义字段值
Display custom field value in WooCommerce single product pages via hook
我还不太了解 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>';
}
有什么建议吗?
以错误的方式使用 get_post_meta()
函数时,您的代码中存在错误。您可以使用不同的方式获取产品自定义字段值:
- 使用
WC_Data
方法 get_meta()
的 WooCommerce 方式:
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>';
}
}
- 旧的 Wordpress 方式使用
get_post_meta()
函数:
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>';
}
}
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>';
}
}
我还不太了解 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>';
}
有什么建议吗?
以错误的方式使用 get_post_meta()
函数时,您的代码中存在错误。您可以使用不同的方式获取产品自定义字段值:
- 使用
WC_Data
方法get_meta()
的 WooCommerce 方式:
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>';
}
}
- 旧的 Wordpress 方式使用
get_post_meta()
函数:
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>';
}
}
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>';
}
}