如何在 WooCommerce 中获取术语自定义字段值?

How to get a term custom field value in WooCommerce?

我已经为 pa_color 分类术语创建了一个 'color' 自定义字段,通过以下原生方式:

这是我的代码:

add_action( 'pa_color_add_form_fields', 'themename_pa_color_add_term_fields' );
 
function themename_pa_color_add_term_fields( $taxonomy ) {
    ?>
    <div class="form-field">
    <label for="themename_pa_color">PA Color</label>
    <input type="color" name="themename_pa_color" id="themename_pa_color" class="wpColorChoose" />
    <p>Field description may go here.</p>
    </div>
    <?php 
}

add_action( 'pa_color_edit_form_fields', 'themename_pa_color_edit_term_fields', 10, 2 );
 
function themename_pa_color_edit_term_fields( $term, $taxonomy ) {
 
    $value = get_term_meta( $term->term_id, 'themename_pa_color', true );
 
    echo '<tr class="form-field">
    <th>
        <label for="themename_pa_color">PA Color</label>
    </th>
    <td>
        <input name="themename_pa_color" id="themename_pa_color" type="color" class="wpColorChoose" value="' . esc_attr( $value ) .'" />
        <p class="description">Field description may go here.</p>
    </td>
    </tr>';
}

add_action( 'created_pa_color', 'themename_pa_color_save_term_fields' );
add_action( 'edited_pa_color', 'themename_pa_color_save_term_fields' );
 
function themename_pa_color_save_term_fields( $term_id ) {
 
    update_term_meta(
        $term_id,
        'themename_pa_color',
        sanitize_text_field( $_POST[ 'themename_pa_color' ] )
    );
 
}

我怎样才能把它们的值放到我需要的地方?

尝试使用 $term->themename_pa_color 时,它不起作用。

它适用于名称和描述默认字段,例如 $term->name$term->description,但不适用于我的字段。

这就是我创建它的方式,它正确地保存了值。

您的代码正在向来自“pa_color”分类法的术语添加自定义字段...所以这是关于 术语元数据 的,它从未包含在 WP_Term 对象,因此无法从 WP_Term 对象作为 属性 访问。

所以答案就在您的代码中。您需要像在您自己的代码中一样使用 WordPress 函数 get_term_meta() (在您的第二个函数中):

$value = get_term_meta( $term->term_id, 'themename_pa_color', true );

echo $value; // Display value

(其中 $term->term_id 是术语 ID,themename_pa_color 是元键)