需要帮助将自定义字段添加到类别

时间:2016-09-09 作者:jrcollins

我正在尝试为类别添加自定义字段。自定义字段是一个复选框。我可以让复选框显示在“创建新类别”和“编辑类别”页面中的表单上,但如果选中复选框,则在保存表单后不会保持选中状态。

这是我正在使用的代码:

/*  Custom Field for Categories.
    ======================================== */

//Add new page

function my_taxonomy_add_meta_fields( $taxonomy ) {
    ?>
    <div class="form-field term-group">
        <label for="show_category"><?php _e( \'Show Category\', \'codilight-lite\' ); ?></label>
        <input type="checkbox" id="show_category" name="show_category" />
    </div>
    <?php
}
add_action( \'category_add_form_fields\', \'my_taxonomy_add_meta_fields\', 10, 2 );

//Edit term page

function my_taxonomy_edit_meta_fields( $term, $taxonomy ) {
    $show_category = get_term_meta( $term->term_id, \'show_category\', true );
    ?>
    <tr class="form-field term-group-wrap">
        <th scope="row">
            <label for="show_category"><?php _e( \'Show Category\', \'codilight-lite\' ); ?></label>
        </th>
        <td>
            <input type="checkbox" id="show_category" name="show_category" value="<?php echo $show_category; ?>" />
        </td>
    </tr>
    <?php
}
add_action( \'category_edit_form_fields\', \'my_taxonomy_edit_meta_fields\', 10, 2 );

//Save custom meta

function my_taxonomy_save_taxonomy_meta( $term_id, $tag_id ) {
    if( isset( $_POST[\'show_category\'] ) ) {
        update_term_meta( $term_id, \'show_category\', esc_attr( $_POST[\'show_category\'] ) );
    }
}
add_action( \'created_category\', \'my_taxonomy_save_taxonomy_meta\', 10, 2 );
add_action( \'edited_category\', \'my_taxonomy_save_taxonomy_meta\', 10, 2 );
我从找到的教程中复制了这段代码。原始代码用于文本字段类型的自定义字段,因此我认为问题可能与复选框设置有关。

1 个回复
最合适的回答,由SO网友:Dave Romsey 整理而成

复选框与文本输入略有不同。下面的主要更改是保存功能和处理checked 属性的价值show_category 如果已选中,则为“是”,如果未选中,则为空字符串。

请记住,如果show_category meta从未保存过,它将被取消设置,所以请在代码中考虑这一点。

/*  Custom Field for Categories.
    ======================================== */

// Add new term page
function my_taxonomy_add_meta_fields( $taxonomy ) { ?>
    <div class="form-field term-group">
        <label for="show_category">
          <?php _e( \'Show Category\', \'codilight-lite\' ); ?> <input type="checkbox" id="show_category" name="show_category" value="yes" />
        </label>
    </div><?php
}
add_action( \'category_add_form_fields\', \'my_taxonomy_add_meta_fields\', 10, 2 );

// Edit term page
function my_taxonomy_edit_meta_fields( $term, $taxonomy ) {
    $show_category = get_term_meta( $term->term_id, \'show_category\', true ); ?>

    <tr class="form-field term-group-wrap">
        <th scope="row">
            <label for="show_category"><?php _e( \'Show Category\', \'codilight-lite\' ); ?></label>
        </th>
        <td>
            <input type="checkbox" id="show_category" name="show_category" value="yes" <?php echo ( $show_category ) ? checked( $show_category, \'yes\' ) : \'\'; ?>/>
        </td>
    </tr><?php
}
add_action( \'category_edit_form_fields\', \'my_taxonomy_edit_meta_fields\', 10, 2 );

// Save custom meta
function my_taxonomy_save_taxonomy_meta( $term_id, $tag_id ) {
    if ( isset( $_POST[ \'show_category\' ] ) ) {
        update_term_meta( $term_id, \'show_category\', \'yes\' );
    } else {
        update_term_meta( $term_id, \'show_category\', \'\' );
    }
}
add_action( \'created_category\', \'my_taxonomy_save_taxonomy_meta\', 10, 2 );
add_action( \'edited_category\', \'my_taxonomy_save_taxonomy_meta\', 10, 2 );

相关推荐

无法在前端显示来自metabox wp_dropdown_ages()的选定帖子标题

我在admin中使用wp_dropdown_pages() 显示自定义帖子类型中的帖子列表workshop. metabox下拉列表在admin中运行良好,我可以选择文章标题并保存它。问题是,当我尝试在前端显示metabox的值时,它只返回所选帖子的ID,而不是标题。如何在前端返回所选帖子的标题?metabox的PHP代码:add_action( \'add_meta_boxes\', \'mysite_work_add_meta_box\' ); if ( ! function_exists(