3
respostas

Erro ao tentar enviar meta informações ao banco

Quando tento enviar as informações ao banco ele me retorna esse erro.


Fatal error: Uncaught ArgumentCountError: Too few arguments to function update_post_meta(), 2 passed in /opt/lampp/htdocs/wordpress/wp-content/themes/action-theme/functions.php on line 278 and at least 3 expected in /opt/lampp/htdocs/wordpress/wp-includes/post.php:2054 Stack trace: #0 /opt/lampp/htdocs/wordpress/wp-content/themes/action-theme/functions.php(278): update_post_meta('beneficios_solu...', 'Lorem ipsum') #1 /opt/lampp/htdocs/wordpress/wp-includes/class-wp-hook.php(288): atualiza_meta_solucao(145) #2 /opt/lampp/htdocs/wordpress/wp-includes/class-wp-hook.php(310): WP_Hook->apply_filters(NULL, Array) #3 /opt/lampp/htdocs/wordpress/wp-includes/plugin.php(465): WP_Hook->do_action(Array) #4 /opt/lampp/htdocs/wordpress/wp-includes/post.php(3951): do_action('save_post', 145, Object(WP_Post), true) #5 /opt/lampp/htdocs/wordpress/wp-includes/post.php(4028): wp_insert_post(Array, false) #6 /opt/lampp/htdocs/wordpress/wp-admin/includes/post.php(405): wp_update_post(Array) #7 /opt/lampp/htdocs/wordpress/wp-admin/post.php(21 in /opt/lampp/htdocs/wordpress/wp-includes/post.php on line 2054

No erro ele diz que a função update_post_meta() recebe no mínimo 3 parâmetros mas até mesmo no curso o instrutor passa apenas 2. Não sei se existe apenas esse erro mas quem puder me ajudar, obrigado.

3 respostas

Oi Edilson, cola seu código aqui pra gente ver o que pode estar gerando esse erro por favor?

function preenche_beneficios_box() {?>
    <style>
        .beneficios {
            display: flex;
            flex-direction: column;
        }

        .beneficios-box {
            resize: none;
            margin-top: .5rem;
        }
    </style>
    <div class="beneficios">
        <label for="beneficios">Benefícios</label>
        <textarea class="beneficios-box" name="beneficios_solucao_id" id="beneficios" cols="30" rows="10"></textarea>
    </div>

<?php }

function registra_meta_boxes() {
    add_meta_box(
        'beneficios-solucoes',
        'Benefícios da solução',
        'preenche_beneficios_box',
        'solucao',
        'normal',
        'high'
    );
}

add_action('add_meta_boxes', 'registra_meta_boxes');

function atualiza_meta_solucao() {
    update_post_meta('beneficios_solucao_id', $_POST['beneficios_solucao_id']);
}

add_action('save_post', 'atualiza_meta_solucao');

function salvar_meta_info_solucoes($post_id) {
    if(isset($_POST['beneficios_solucao_id'])) {
        update_post_meta('beneficios_solucao_id', $_POST['beneficios_solucao_id']);
    }
}

add_action('save_post', 'salvar_meta_info_solucoes');

Oi Edilson, pode ser algo ligado a versão. Hoje, você é obrigado a passar o id do post, o meta_name (nome do campo que você quer atualizar e o meta_value (novo valor para o campo).

A documentação deixa claro: https://codex.wordpress.org/Function_Reference/update_post_meta

Você por exemplo, recebe o $post_idna função, mas não está passando ela como primeiro parâmetro da função update_post_meta.