Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro ao salvar meta dados

Estão aparecendo os seguintes erros ao salvar os dados: https://uploaddeimagens.com.br/imagens/erro_meta_dados-png

Segue o código do arquivo functions.php

<?php

    add_theme_support('post-thumbnails');

    function cadastrando_post_type_imoveis() {

        $nomeSingular = 'Imóvel';
        $nomePlural = 'Imóveis';
        $description = 'Imóveis da imobiliária Maluras';

        $labels = array(
            'name' => $nomePlural,
            'name_singular' => $nomeSingular,
            'add_new_item' => 'Adicionar novo ' . $nomeSingular,
            'edit_item' => 'Editar ' . $nomeSingular
        );

        $supports = array(
            'title',
            'editor',
            'thumbnail'
        );

        $args = array(
            'labels' => $labels,
            'public' => true,
            'description' => $description,
            'menu_icon' => 'dashicons-admin-home',
            'supports' => $supports
        );

        register_post_type('imovel', $args);
    }

    function registrar_menu_navegacao() {
        register_nav_menu('header-menu', 'main-menu');
    }

    function geraTitle() {
        bloginfo('name');

        if (!is_home()) {
            echo ' | ';
        }

        the_title();
    }

    function registra_taxonomia_localizacao() {
        $nome_singular = 'Localização';
        $nome_plural = 'Localizações';

        $labels = array(
            'name' => $nome_plural,
            'singular_name' => $nome_singular,
            'edit_item' => 'Editar ' . $nome_singular,
            'add_new_item' => "Adicionar nova " . $nome_singular
        );

        $args = array(
            'labels' => $labels,
            'public' => true,
            'hierarchical' => true
        );
        register_taxonomy('localizacao', 'imovel', $args);
    }

    function preenche_conteudo_informacoes_imovel() {
        ?>

        <style>
            .maluras-metabox {
                display: flex;
                justify-content: space-between;
            }

            .maluras-metabox-item {
                flex-basis: 30%;

            }

            .maluras-metabox-item label {
                font-weight: 700;
                display: block;
                margin: .5rem 0;

            }

            .input-addon-wrapper {
                height: 30px;
                display: flex;
                align-items: center;
            }

            .input-addon {
                display: block;
                border: 1px solid #CCC;
                border-bottom-left-radius: 5px;
                border-top-left-radius: 5px;
                height: 100%;
                width: 30px;
                text-align: center;
                line-height: 30px;
                box-sizing: border-box;
                background-color: #888;
                color: #FFF;
            }

            .maluras-metabox-input {
                height: 100%;
                border: 1px solid #CCC;
                border-left: none;
                margin: 0;
            }

        </style>
        <div class="maluras-metabox">
            <div class="maluras-metabox-item">
                <label for="maluras-preco-input">Preço:</label>
                <div class="input-addon-wrapper">
                    <span class="input-addon">R$</span>
                    <input id="maluras-preco-input" class="maluras-metabox-input" type="text" name="preco_id"
                           >
                </div>
            </div>

            <div class="maluras-metabox-item">
                <label for="maluras-vagas-input">Vagas:</label>
                <input id="maluras-vagas-input" class="maluras-metabox-input" type="number" name="vagas_id" >
            </div>

            <div class="maluras-metabox-item">
                <label for="maluras-banheiros-input">Banheiros:</label>
                <input id="maluras-banheiros-input" class="maluras-metabox-input" type="number" name="banheiros_id"
                       >
            </div>

            <div class="maluras-metabox-item">
                <label for="maluras-quartos-input">Quartos:</label>
                <input id="maluras-quartos-input" class="maluras-metabox-input" type="number" name="quartos_id"
                       >
            </div>

        </div>
        <?php

    }

    function registra_meta_boxes() {
        add_meta_box(
                'informacoes-imoveis', 'Informações do Imóvel', 'preenche_conteudo_informacoes_imovel', 'imovel', 'normal', 'default'
        );
    }

    function atualiza_meta_info() {

        if (isset($_POST['preco_id'])) {
            update_post_meta('preco_id', $_POST['preco_id']);
        }
        if (isset($_POST['vagas_id'])) {
            update_post_meta('vagas_id', $_POST['vagas_id']);
        }
        if (isset($_POST['banheiros_id'])) {
            update_post_meta('banheiros_id', $_POST['banheiros_id']);
        }

        if (isset($_POST['quartos_id'])) {
            update_post_meta('quartos_id', $_POST['quartos_id']);
        }
    }

    add_action('init', 'cadastrando_post_type_imoveis');
    add_action('init', 'registrar_menu_navegacao');
    add_action('init', 'registra_taxonomia_localizacao');
    add_action('add_meta_boxes', 'registra_meta_boxes');
    add_action('save_post', 'atualiza_meta_info');

Verifiquei e esta igual ao código da aula. Alguém saberia qual é o problema?

3 respostas

Oi Fausto, seu primeiro problema é que a função update_post_meta precisa do ID do post como primeiro parametro, e você não está passando esse valor. Link da documentação pra você ler mais: https://codex.wordpress.org/Function_Reference/update_post_meta#Parameters

Também tive dificuldades nessa parte, e olhando com mais atenção entendi o problema:

Wordpress Auala 6 - Video 2, aos 7:15 podemos observar o codigo que está na tela é: update_post_meta('quartos_id', $_POST['quartos_id']);

Ele possui apenas 2 variaveis, e ao tentar salvar nesse momento, da um erro pedidno por mais 1 parametro. O problema é que o Yuri não testa isso no video, e o erro não ocorre, parece que o video "corta" e inicia de novo, ele até diz: eu estava fazendo alguns testes (que não esta no video) Ele vai direto no banco de dados e encontra a entrada, e quando ele retorna ao codigo aos: 11:30 nos vemos aque o codigo que aparecia aos 7:15 esta diferente, e o que muda é exatamente esse terceiro parametro que estava faltando, o numero do Post.

Porém a dificuldade agora é entender essa logica do numero do post, uma vez que não teve essa explicação.

solução!

Oi Henrique, não cheguei a verificar isso, mas faz sentido. Acho que vou passar pro pessoal dar uma olhada. Obrigado por esse feedback.