@80689248440

Почему не сохраняются произвольные поля?

Подскажите почему не происходит сохранение полей?
add_action('admin_init', 'my_extra_fields_forpechat', 1);

function my_extra_fields_forpechat() {	
	add_meta_box( 'extra_fields_for_status', 'Статус товара', 'extra_fields_box_func_forpechat', 'product', 'normal', 'high'  );
}

// код блока
function extra_fields_box_func_forpechat( $post ){
	?>
		<p><?php $mark_v = get_post_meta($post->ID, 'status_tovara', 1); ?>
		 <label><input type="radio" name="extra[status_tovara]" value="Супер цена" <?php checked( $mark_v, 'Супер цена' ); ?> /> Супер цена</label>
		 <label><input type="radio" name="extra[status_tovara]" value="Товар недели" <?php checked( $mark_v, 'Товар недели' ); ?> /> Товар недели</label>
		 <label><input type="radio" name="extra[status_tovara]" value="Лучшая цена" <?php checked( $mark_v, 'Лучшая цена' ); ?> /> Лучшая цена</label>		 
		 <label><input type="radio" name="extra[status_tovara]" value="Новинка" <?php checked( $mark_v, 'Новинка' ); ?> /> Новинка</label>		 
		 <label><input type="radio" name="extra[status_tovara]" value="Выбор покупателей" <?php checked( $mark_v, 'Выбор покупателей' ); ?> /> Выбор покупателей</label>		 
		 <label><input type="radio" name="extra[status_tovara]" value="Дисконтные товары" <?php checked( $mark_v, 'Дисконтные товары' ); ?> /> Дисконтные товары</label>	 
	</p>
	<input type="hidden" name="extra_fields_nonce" value="<?php echo wp_create_nonce(__FILE__); ?>" />
	
	<?php
}

add_action('save_post', 'my_extra_fields_for_pechat_update', 0);

function my_extra_fields_for_pechat_update( $post_id ){
	if ( !wp_verify_nonce($_POST['extra_fields_nonce'], __FILE__) ) return false; // проверка
	if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE  ) return false; // если это автосохранение
	if ( !current_user_can('edit_post', $post_id) ) return false; // если юзер не имеет право редактировать запись

	if( !isset($_POST['extra']) ) return false;	

	$need_check = array_map( 'trim', explode(',', $_POST['status_tovara']) );
	foreach( $need_check as $val )
		$_POST['extra'][$val] = @$_POST['extra'][$val];

	$_POST['extra'] = array_map('trim', $_POST['extra']);
	foreach( $_POST['extra'] as $key=>$value ){
		if( empty($value) )
			delete_post_meta($post_id, $key); // удаляем поле если значение пустое
			continue;

		update_post_meta($post_id, $key, $value); // add_post_meta() работает автоматически
	}
	return $post_id;
}

Пытаюсь добавить блок в товары плагина woocomerce в таксономию product
  • Вопрос задан
  • 854 просмотра
Решения вопроса 1
lifestar
@lifestar
Wallet карты, Видео-продакшн
Потому, что всегда срабатывает continue;

Попробуй так
if( empty($value) ) {
    delete_post_meta($post_id, $key); // удаляем поле если значение пустое
    continue;
}


Кстати, а это что?))
$_POST['extra'][$val] = @$_POST['extra'][$val];
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы