我是WordPress的新手。我在“类别”分类法中添加了一个自定义字段。自定义字段是“custom\\u order”,其目的是保存一个数字,以便我的类别可以按照我选择的顺序进行排序和显示。
我的问题是我无法让他们分类;我可以显示类别,以及“echo”每个类别的“custom\\u order”编号,但在访问和排序meta\\u值时,我肯定遗漏了一些东西。
我也不确定我的做法是否正确。
以下是我将字段添加到“新建类别”页面的代码:
<?php
function taxonomy_add_new_meta_field()
{ ?>
<div class="form-field">
<label for="term_meta[custom_order]">Order</label>
<input type="number" name="term_meta[custom_order]" id="term_meta[custom_order]" value="">
<p class="description">Enter an order number for organizational purposes</p>
</div>
<?php
}
add_action( \'category_add_form_fields\', \'taxonomy_add_new_meta_field\', 10, 2 );
?>
以下是我将字段添加到“编辑类别”页面的代码:
<?php
function taxonomy_edit_meta_field($term) {
$t_id = $term->term_id;
$term_meta = get_option( "taxonomy_$t_id" ); ?>
<tr class="form-field">
<th scope="row" valign="top"><label for="term_meta[custom_order]">Order</label></th>
<td>
<input type="number" name="term_meta[custom_order]" id="term_meta[custom_order]" value="<?php echo esc_attr( $term_meta[\'custom_order\'] ) ? esc_attr( $term_meta[\'custom_order\'] ) : \'\'; ?>">
<p class="description">Enter an order number for organizational purposes</p>
</td>
</tr>
<?php
}
add_action( \'category_edit_form_fields\', \'taxonomy_edit_meta_field\', 10, 2);
?>
以下是我保存字段内容的代码:
<?php
function save_taxonomy_custom_meta( $term_id ) {
if ( isset( $_POST[\'term_meta\'] ) ) {
$t_id = $term_id;
$term_meta = get_option( "taxonomy_$t_id" );
$cat_keys = array_keys( $_POST[\'term_meta\'] );
foreach ( $cat_keys as $key) {
if ( isset ( $_POST[\'term_meta\'][$key] ) ) {
$term_meta[$key] = $_POST[\'term_meta\'][$key];
}
}
update_option( "taxonomy_$t_id", $term_meta );
}
}
add_action( \'edited_category\', \'save_taxonomy_custom_meta\', 10, 2 );
add_action( \'create_category\', \'save_taxonomy_custom_meta\', 10, 2 );
我从该网站获得的上述代码片段:
http://pippinsplugins.com/adding-custom-meta-fields-to-taxonomies/
最后但并非最不重要的一点是,我尝试根据此字段对类别进行排序:
$args = array(
\'parent\' => $category->cat_ID,
\'hide_empty\'=>0,
\'exclude\'=>\'1\',
\'meta_key\'=>\'custom_order\',
\'orderby\'=>\'meta_value_num\',
\'order\'=>\'ASC\'
);
$subcategories = get_categories($args);
然后,我使用foreach()循环遍历$subcategories数组。我以为我已经成功了,直到我添加了第三个子类别;我现在看到它将“custom\\u order”1放在第一位,“custom\\u order”3秒,“custom\\u order”2放在第三位。
谁能帮我一把吗?