如何在wordpress中的自定义分类字段中添加默认值

时间:2018-05-02 06:48:11

标签: wordpress custom-taxonomy

我已经创建了自定义分类名称" Front List"使用Custom Post Type UI然后添加名为" Order"的自定义字段。我试图为订单设置默认值。当我使用前面板面板创建任何前面列表时,

enter image description here

它添加了一个默认值,但是当我从"添加帖子"页面没有为"订单字段"添加任何默认值。

当"前列表"时,如何添加默认值?从"添加帖子"创建页?

这是将自定义字段添加到Frontlist分类中的代码。

<?php
/**
 * Adding Custom Field to Taxonomy
 * @return void 
 */

function frontlists_add_order( $term ) {

    ?>
    <div class="form-field">
        <label for="taxOrder"><?php _e( 'Order', 'yourtextdomain' ); ?></label>

        <input type="text" name="taxOrder" id="taxOrder" value="">
        <p>Your front List item will be sorted by this "Order". The default value is "1".</p>
    </div>
<?php
}
add_action( 'frontlists_add_form_fields', 'frontlists_add_order', 10, 2 );

/**
 * Adding Custom Field to Taxonomy in Edit Panel
 * @return void 
 */
function frontlists_edit_order( $term ) {

    $term_order = get_term_meta( $term->term_id, 'order', true ); 

    ?>
    <tr class="form-field">
        <th><label for="taxOrder"><?php _e( 'Order', 'yourtextdomain' ); ?></label></th>

        <td>     
            <input type="text" name="taxOrder" id="taxOrder" value="<?php echo esc_attr( $term_order ) ? esc_attr( $term_order ) : ''; ?>">
            <p>Your front List item will be sorted by this "Order".</p>
        </td>
    </tr>
<?php
}
add_action( 'frontlists_edit_form_fields', 'frontlists_edit_order', 10 );

/**
 * Saving Custom Field to Taxonomy
 */
function frontlists_save_order( $term_id ) {

    if ( isset( $_POST['taxOrder'] ) ) {
        $term_order = $_POST['taxOrder'];
        if( $term_order ) {
             update_term_meta( $term_id, 'order', $term_order );
        } else {
            update_term_meta( $term_id, 'order', 1 );
        }
    }

}  
add_action( 'edited_frontlists', 'frontlists_save_order' );  
add_action( 'create_frontlists', 'frontlists_save_order' );

1 个答案:

答案 0 :(得分:0)

您可以使用created_term操作挂钩在已添加到数据库后添加新的分类术语。此操作挂钩位于wp_insert_term函数内。要么把它放在你的主题中(不建议),要么放在插件中。

function so_add_order_field( $term_id, $tt_id, $taxonomy ) {
    // The default order value
    $default = 1;

    // Stop if it's not the right taxonomy
    if ( 'frontlists' != $taxonomy ) {
        return false;
    }

    // Get the existing value if exists
    $order = get_term_meta( $term_id, 'taxOrder', true );

    if ( false === $order ) {
        // Add the term meta default
        add_term_meta( $term_id, 'taxOrder', $default );
    }
}
add_action( 'created_term', 'so_add_order_field', 10, 3 );

然后将$default值更改为您希望的值。这使用add_term_meta函数,可以为您安全地将元数据添加到数据库中。查看文档以获取更多信息。