Hook save_post — Processar dados ao salvar um post
Causa
Plugins e temas frequentemente precisam executar lógica extra ao salvar posts, como sincronizar dados com APIs externas ou salvar campos personalizados.
Como resolver
Sempre verifique autosave, revisão e nonce antes de processar. Use save_post_{post_type} para limitar a ação a um tipo específico de post.
PHP
<?php
add_action('save_post_produto', function (int $post_id, WP_Post $post): void {
// Ignora autosave
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
// Ignora revisões
if (wp_is_post_revision($post_id)) return;
// Verifica nonce
if (!isset($_POST['_meu_nonce']) || !wp_verify_nonce($_POST['_meu_nonce'], 'salvar_produto_' . $post_id)) return;
// Verifica permissão
if (!current_user_can('edit_post', $post_id)) return;
// Sanitiza e salva o campo
$preco = filter_input(INPUT_POST, '_preco', FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
if ($preco !== null) {
update_post_meta($post_id, '_preco', (float) $preco);
}
}, 10, 2);