WP Metabox не сохраняет мета-сообщения

я пытаюсь реализовать простой флажок на странице, чтобы динамически добавлять фрагмент HTML на случай, если пользователь выберет его, но я не могу сохранить post_meta для выполнения этой задачи, может ли кто-нибудь мне помочь? Значение, взятое из этого флажка, не сохраняется в метаинформации поста.

Это то, что я получил до сих пор в своих функциях.php

function wporg_add_custom_box(){
    $screens = ['page', 'wporg_cpt'];
    foreach ($screens as $screen) {
        add_meta_box(
            'wporg_box_id',           // Unique ID
            'Entra in Flee Block',  // Box title
            'wporg_custom_box_html',  // Content callback, must be of type callable
            $screen,                   // Post type
            'side'
        );
    }
}
add_action('add_meta_boxes', 'wporg_add_custom_box');


function wporg_custom_box_html($post){
    $value = get_post_meta($post->ID, '_wporg_meta_key', true);
    ?>
    <label for="wporg_field">Add "Entra in Flee" block to page</label>
    </br>
    <input type="checkbox" name="wporg_field" id="wporg_field" class="postbox">
    <?php
}


function wporg_save_postdata($post_id){
    if (array_key_exists('wporg_field', $_POST)) {
        update_post_meta(
            $post_id,
            '_wporg_meta_key',
            $_POST['wporg_field']
        );
    }
}
add_action('save_post', 'wporg_save_postdata');

person Luiz Wynne    schedule 14.05.2019    source источник


Ответы (1)


Вы не используете $value в функции wp_cusotm_box_html. Я думаю, что это должно быть что-то вроде этого:

function wporg_add_custom_box()
{
    $screens = ['page', 'wporg_cpt'];
    foreach ($screens as $screen) {
        add_meta_box(
            'wporg_box_id',           // Unique ID
            'Entra in Flee Block',  // Box title
            'wporg_custom_box_html',  // Content callback, must be of type callable
            $screen,                   // Post type
            'side'
        );
    }
}

add_action('add_meta_boxes', 'wporg_add_custom_box');
function wporg_custom_box_html($post)
{
    $value = get_post_meta($post->ID, '_wporg_meta_key', true) ? 'checked' : '';
    ?>
    <label for="wporg_field">Add "Entra in Flee" block to page</label>
    </br>
    <input type="checkbox" name="wporg_field" id="wporg_field" class="postbox" <?php echo $value; ?>>
    <?php
}

function wporg_save_postdata($post_id)
{
    if (array_key_exists('wporg_field', $_POST)) {
        update_post_meta(
            $post_id,
            '_wporg_meta_key',
            $_POST['wporg_field']
        );
    } else {
        delete_post_meta(
            $post_id,
            '_wporg_meta_key'
        );
    }
}

add_action('save_post', 'wporg_save_postdata');
person Uri Chachick    schedule 14.05.2019
comment
Флажок не снимается, если я делаю это и сохраняю страницу. Любая идея о том, что может происходить? - person Luiz Wynne; 14.05.2019
comment
да, код обновляет post_meta только в том случае, если флажок установлен. Я обновил свой ответ, чтобы учесть, когда он не проверен - person Uri Chachick; 14.05.2019