我正在尝试将特定类别产品的自定义字段添加到单个产品页面。我在使用条件逻辑时遇到问题。 这是到目前为止我得到的:
function cfwc_create_custom_field() {
global $product;
$terms = get_the_terms( $product->get_id(), 'product_cat' );
if (in_array("tau-ende", $terms)) {
$args = array(
'id' => 'custom_text_field_title',
'label' => __( 'Custom Text Field Title', 'cfwc' ),
'class' => 'cfwc-custom-field',
'desc_tip' => true,
'description' => __( 'Enter the title of your custom text field.', 'ctwc' ),);
woocommerce_wp_text_input( $args );
}}
该功能有效,但if语句无效。有人知道我在做什么错吗?
答案 0 :(得分:1)
请改用以下方法,使用foreach循环遍历term对象:
function cfwc_create_custom_field() {
global $product;
$terms = get_the_terms( $product->get_id(), 'product_cat' );
// Loop through term objects
foreach( $terms as $term ) {
if ( "tau-ende" === $term->slug ) {
woocommerce_wp_text_input( array(
'id' => 'custom_text_field_title',
'label' => __( 'Custom Text Field Title', 'cfwc' ),
'class' => 'cfwc-custom-field',
'desc_tip' => true,
'description' => __( 'Enter the title of your custom text field.', 'ctwc' ),
) );
break; // The term match, we stop the loop.
}
}
}
当一个术语匹配时,我们将停止循环,只有一个自定义字段……它现在应该可以工作。
答案 1 :(得分:0)
get_the_terms(id, taxonomy)
此函数返回WP_Term
对象的数组,而不是术语的字符串名称。因此,使用in_array
函数的if条件。
如果要检查给定名称是否在术语中,则可以这样操作-
$cond = false;
foreach($terms as $term) {
if ($term->slug == "tau-ende"){ // You can also match using $term->name
$cond = true;
}
}