【问题标题】:How to add default value in custom taxonomy field in wordpress如何在 wordpress 的自定义分类字段中添加默认值
【发布时间】:2018-05-02 15:49:34
【问题描述】:

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

它添加了一个默认值,但是当我从“添加帖子”页面创建前列表时,它没有为“订单字段”添加任何默认值。

如何在“添加帖子”页面创建“前列表”时添加默认值?

这是向 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' );

【问题讨论】:

    标签: wordpress custom-taxonomy


    【解决方案1】:

    您可以使用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 函数,它可以为您安全地将元数据添加到数据库中。查看文档以获取更多信息。

    【讨论】:

    • 感谢您的帮助,我已将此代码添加到我的 function.php 中,但它没有添加默认值,请您再检查一下吗?
    • 没问题。是否将值添加到数据库中?确保代码在仪表板中运行,主题可能无法正确执行。还要检查它是否使用正确的元键添加到数据库中,因此请确保 taxOrder 是正确的。
    • 它没有为数据库增加价值,我检查了元键,它是“订单”。但仍然无法工作。你能告诉我如何确保代码在仪表板中运行吗?
    猜你喜欢
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多