Как добавить значение по умолчанию в поле таксономии в WordPress - PullRequest
0 голосов
/ 02 мая 2018

Я создал имя пользовательской таксономии "Front List", используя Пользовательский тип записи UI , затем добавил настраиваемое поле с именем "Order". Я пытаюсь установить значение по умолчанию для заказа. Когда я создаю любой фронт-лист с помощью панели фронт-листов,

enter image description here

это добавляет значение по умолчанию, но когда я создаю фронт-лист со страницы «Добавить сообщение», он не добавляет никакого значения по умолчанию для «Поле заказа».

Как добавить значение по умолчанию при создании «Front List» со страницы «Добавить сообщение»?

Это код для добавления настраиваемого поля в таксономию 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 голосов
/ 02 мая 2018

Вы можете использовать ловушку действия 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, которая безопасно добавляет метаданные в базу данных для вас. Проверьте документацию для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...