VoxelGod
@VoxelGod
Настройка шаблонов WordPress

Почему не обновляются данные кастомных полей метабокса?

Привет. Создаю кастомный метабокс, но данные из него по какой-то причине не обновляются в базе данных.

Вот я создаю сам metabox:
function cgc_tour_meta_box() {
    add_meta_box(
        'tour_meta_box',
        'Tournament Meta Box',
        'cgc_display_meta_box', //callback
        'tour',
        'normal',
        'high'
    );
}

add_action( 'add_meta_boxes', 'cgc_tour_meta_box' );


С этим никаких трудностей не возникло. Метабокс отображается.

Создаю кастомное поле у метабокса и записываю туда значение из базы данных:
function cgc_display_meta_box( $post ) {
    $title = get_post_meta( $post -> ID, 'tour_title', true );
    ?>
            <!-- Название турнира -->
            <div class="meta-row">
                <div class="meta-th">
                    <label for="tour-title" class="cgc-row-title">Tournament Title</label>
                </div>
                <div class="meta-td">
                    <input type="text" id="tour-title" name="tour-title" value="<?php echo $title ?>">
                </div>
            </div>
<?php
}


Эта функция вызывается при создании metabox(см.первый блок кода).
Все так же отлично работает. Создал в БД поле с ключом 'tour_title' и все нормально отобразилось.

А вот проблема возникла именно в обновлении данных:
function cgc_meta_save( $post_id ) {

    if ( isset( $_POST['tour_title'] ) && $_POST['tour_title'] != '' ) {
        update_post_meta( $post_id, 'tour_title', sanitize_text_field( $_POST[ 'tour_title' ] ) );
    }
}
add_action( 'save_post', 'cgc_meta_save' );


Просто не обновляются. Никак. Что тут может быть неправильно написано? Перерыл документацию, вроде бы все сделал все как надо, да и ошибок не выдает.

P.S Для теста сделал самый простенький примерчик(И то не работает). Всякими проверками и nonce_field'ами потом напичкаю.

Заранее благодарю!
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
Потому что имя поля у вас tour-title а сохранять пытаетесь tour_title
<input type="text" id="tour-title" name="tour_title" value="<?php echo $title ?>">
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы