Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Fixar item selecionado no dropdown do metabox

Fiz um metabox que é para selecionar, dentro do post, um autor para aparecer. O autor é o título de um custom post type. Está funcionando e refletindo corretamente no front. O problema é que quando salvo/atualizo o post, a lista sempre vai mostrar o primeiro nome da lista e não o que foi selecionado.

<?php
//ADICIONANDO O META BOX
add_action( 'add_meta_boxes', 'vinil_meta_box_add' );
function vinil_meta_box_add(){
add_meta_box( 'my-meta-box-id', 'Autor Convidado', 'vinil_meta_box_vinil', 'post', 'normal', 'high' );
}

//FORMULARIO PARA SALVAR OS DADOS
function vinil_meta_box_vinil(){
$values = get_post_custom( $post->ID );
$selected = isset( $values['meta_box_select'] ) ? esc_attr( $values['meta_box_select'][0] ) : '';
wp_nonce_field( 'my_meta_box_nonce', 'meta_box_nonce' );
?>
<p>
<label for="meta_box_select">Autor Convidado</label>
<select name="meta_box_select" id="meta_box_select">
<?php
global $post;
                                $args = array(
                                    'post_type'      => 'wpll_convidado',
                                     'order'          => 'ASC',
                                );

                                $posts = query_posts($args);
                            ?>

                            <?php foreach ( $posts as $post ) : setup_postdata($post);?>
      <option value="<?php echo the_title() ?>" <?php selected( $selected, the_title() ); ?>><?php echo the_title() ?></option>
                            <?php endforeach;?>
</select>
</p>
<?php
}

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

if( !isset( $_POST['meta_box_nonce'] ) || !wp_verify_nonce( $_POST['meta_box_nonce'], 'my_meta_box_nonce' ) ) return;

if( !current_user_can( 'edit_post' ) ) return;

if( isset( $_POST['meta_box_select'] ) )
update_post_meta( $post_id, 'meta_box_select', esc_attr( $_POST['meta_box_select'] ) );

}

?>

A estrutura do metabox peguei daqui: https://tableless.com.br/usando-meta-box-em-seu-tema-wordpress/

1 resposta
solução!

Oi, Stephanie, tudo bem?

Você já acessou a documentação do wordpress meta_box para te ajudar? https://developer.wordpress.org/reference/functions/add_meta_box/

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software