Описание woocommerce_process_$POST->POST_TYPE_meta
— Action
Хук woocommerce_process_$POST->POST_TYPE_meta позволяет обработать и сохранить метаданные товара перед его обновлением или созданием. Он срабатывает при отправке формы редактирования товара в админке WooCommerce и предоставляет возможность изменять или добавлять метаданные, связанные с конкретным типом товара
Примеры использования
Пример добавления пользовательского метаполя для товара:
add_action('woocommerce_process_product_meta', function($post_id) {
if (isset($_POST['custom_meta_field'])) {
update_post_meta($post_id, 'custom_meta_field', sanitize_text_field($_POST['custom_meta_field']));
}
}, 10, 1);
В этом примере мы добавляем пользовательское метаполе, которое сохраняется при обновлении товара
Пример удаления метаполя товара:
add_action('woocommerce_process_product_meta', function($post_id) {
delete_post_meta($post_id, 'obsolete_meta_field');
}, 10, 1);
Здесь мы удаляем метаполе, если оно больше не нужно
Пример валидации данных перед сохранением:
add_action('woocommerce_process_product_meta', function($post_id) {
if (isset($_POST['custom_meta_field']) && empty($_POST['custom_meta_field'])) {
// Вывод ошибки или обработка
add_action('admin_notices', function() {
echo 'Пожалуйста, введите значение для поля.
';
});
} else {
update_post_meta($post_id, 'custom_meta_field', sanitize_text_field($_POST['custom_meta_field']));
}
}, 10, 1);
В этом примере мы проверяем, заполнено ли пользовательское поле, и выводим ошибку, если оно пустое
— Лучшие практики
– Использование
Используйте этот хук, когда необходимо сохранить или обработать пользовательские метаданные товара в WooCommerce
– Производительность
Хук не должен значительно влиять на производительность, так как выполняется только при сохранении данных
– Предупреждения
Соблюдайте меры предосторожности при работе с пользовательскими данными, чтобы избежать возможных уязвимостей
Альтернативы
Тип: action
Этот хук позволяет добавлять дополнительные поля в общие настройки товара
Используйте его, если нужно добавить новое поле для ввода данных на странице редактирования товара