Você está em boa companhia com suporte incrível 🤝

Salvando metadados customizados com segurança no hook save_post

Time Full Services Time Full Services
Nome do erro Salvando metadados customizados com segurança no hook save_post
Severidade Informativo
Desde WordPress 2.0
Descrição Como persistir campos personalizados ao salvar um post sem disparar loops ou gravar dados não confiáveis.

Como persistir campos personalizados ao salvar um post sem disparar loops ou gravar dados não confiáveis.

Causa

Usar save_post sem checar autosave, revisões e nonce faz o callback rodar múltiplas vezes por clique em salvar e permite gravar dados de origens não verificadas.

Como resolver

Verifique DOING_AUTOSAVE e wp_is_post_revision(), valide o nonce com wp_verify_nonce() e sanitize cada valor antes de chamar update_post_meta().

PHP
add_action( 'save_post', function ( $post_id ) {
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return;
    }

    if ( ! isset( $_POST['meu_nonce'] ) || ! wp_verify_nonce( $_POST['meu_nonce'], 'salvar_meta' ) ) {
        return;
    }

    if ( ! current_user_can( 'edit_post', $post_id ) ) {
        return;
    }

    if ( isset( $_POST['meu_campo'] ) ) {
        update_post_meta( $post_id, 'meu_campo', sanitize_text_field( $_POST['meu_campo'] ) );
    }
} );

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →