Я не могу вставить значение из формы интерфейса WordPress в пользовательский мета-блок - PullRequest
0 голосов
/ 29 февраля 2020

У меня проблема с метабоксами. Я не могу поместить значения из формы в настраиваемое поле метабокса. У меня есть этот код для добавления пользовательского мета-поля:

//Field Marka drukarki

function wporg_add_custom_box1()
{
    $screens = ['printers', 'wporg_cpt'];
    foreach ($screens as $screen) {
        add_meta_box(
            'mark_printer_box_id',           // Unique ID
            'Marka drukarki',  // Box title
            'wporg_mark_of_printer_box_html1',  // Content callback, must be of type callable
            $screen                   // Post type
        );
    }
}
add_action('add_meta_boxes', 'wporg_add_custom_box1');

function wporg_mark_of_printer_box_html1($post)
{
    $value = get_post_meta($post->ID, '_wporg_meta_key', true);
    ?>
    <select name="wporg_field" id="wporg_field" class="postbox">
        <option value="">Wybierz markę...</option>
        <option value="samsung" <?php selected($value, 'samsung'); ?>>SAMSUNG</option>
        <option value="hp" <?php selected($value, 'hp'); ?>>HP</option>
        <option value="xerox" <?php selected($value, 'xerox'); ?>>XEROX</option>
        <option value="brother" <?php selected($value, 'brother'); ?>>BROTHER</option>
        <option value="minolta" <?php selected($value, 'minolta'); ?>>MINOLTA</option>
    </select>
    <?php
}

function wporg_save_printer_mark_postdata1($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_printer_mark_postdata1');
add_action('post_updated', 'wporg_save_printer_mark_postdata1');

И я пытаюсь поместить значение из формы с помощью этого кода:

// Submit post from WordPress

if(isset($_POST['model']) and isset($_POST['marka'])) {

    // echo  'Drukarka '.$_POST['marka'].' '.$_POST['model'];

    $my_post = array(
        'post_type' => 'printers',
        'post_title' => 'Drukarka '.$_POST['marka'].' '.$_POST['model'],
        'post_content' => $_POST['opis'],
        'post_status' => 'publish'
    );

    $post_id = wp_insert_post($my_post);

    if(!function_exists('wp_generate_attachment_metadata')) {

        require_once(ABSPATH . "wp-admin" . '/includes/image.php');
        require_once(ABSPATH . "wp-admin" . '/includes/file.php');
        require_once(ABSPATH . "wp-admin" . '/includes/media.php');

    }
        if($_FILES) {
            foreach ($_FILES as $file => $array) {
                if($_FILES[$file]['error'] !== UPLOAD_ERR_OK) {
                    return "Błąd przesyłania zdjęcia :" . $_FILES[$file]['error'];
                }
                $attach_id = media_handle_upload($file,$post_id);
            }
        }
        if($attach_id > 0) {
            update_post_meta($post_id,'_thumbnail_id',$attach_id);
            update_post_meta($post_id,'mark_printer_box_id',$_POST['marka'],true);
        }
    echo 'Dodano ogłoszenie';
    die;

}

Код также добавить миниатюру к сообщению. Пост добавляется без мета-поля, пометка принтера с миниатюрой. Название, описание и уменьшенное изображение добавляются правильно. Я думаю проблема может быть в аргументе функции update_post_meta. Спасибо за помощь

...