У меня проблема с метабоксами. Я не могу поместить значения из формы в настраиваемое поле метабокса. У меня есть этот код для добавления пользовательского мета-поля:
//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. Спасибо за помощь