我正在尝试将自定义字段添加到我的分类中,但是当我保存值时,update_metadata函数不会保存任何内容
add_action( 'product_category_edit_form_fields', 'edit_product_category', 10, 2);
function edit_product_category($tag, $taxonomy)
{
$product_category_sort_field = get_metadata($tag->taxonomy, $tag->term_id, 'product_category_sort_field', true);
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="product_category_sort_field">sort</label></th>
<td>
<input type="text" style="width:20%" name="product_category_sort_field" id="product_category_sort_field"
value="<?php echo $product_category_sort_field; ?>"/><br />
</td>
</tr>
<?php
}
add_action( 'edited_product_category', 'save_product_category', 10, 2);
function save_product_category($term_id, $tt_id)
{
if (!$term_id) return;
if ( isset( $_POST['product_category_sort_field'] ) ) {
update_metadata($_POST['taxonomy'], $term_id, 'product_category_sort_field',
$_POST['product_category_sort_field'] );
}
}
答案 0 :(得分:1)
问题是没有wp_taxonomy_meta
表,所以这不起作用:update_metadata($_POST['taxonomy'], ...
。
我见过的两个解决方案:存储在wp_options
中或使用字段描述来存储JSON字符串。
在这里,我只使用一个 wp_option
字段,但如果您有数百个条款,我不确定这是否可以很好地扩展。请注意,我们也使用了错误的钩子。
add_action( 'product_edit_form_fields', 'edit_product_category', 10, 2);
function edit_product_category($tag, $taxonomy)
{
$option = get_option('product_category_sort_field');
$product_category_sort_field = ( $option && isset( $option[$tag->term_id] ) )
? $option[$tag->term_id] : '';
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="product_category_sort_field">sort</label></th>
<td>
<input type="text" style="width:20%" name="product_category_sort_field" id="product_category_sort_field"
value="<?php echo $product_category_sort_field; ?>"/><br />
</td>
</tr>
<?php
}
add_action( 'edited_term_taxonomy', 'save_product_category', 10, 2);
function save_product_category( $term_id, $taxonomy )
{
if (!$term_id)
return;
$option = get_option('product_category_sort_field');
if ( isset( $_POST['product_category_sort_field'] ) ) {
$option[$term_id] = $_POST['product_category_sort_field'];
update_option( 'product_category_sort_field', $option );
}
}
你会在WordPress的答案中找到很多relevant posts,例如this和this。