如何在 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
是元键)…
我已经为 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
是元键)…