wpbrasil/odin

Populando Select com dados do bd

cunhapablo opened this issue · 1 comments

Olá pessoal, boa tarde.
Já pesquisei diversas formas e estou recorrendo a ajuda de vocês no seguinte problema:

Criei um custom post type para Países e estou criando um outro custom post type de cidades em que o usuário deverá selecionar o país que aquela cidade pertence, porém coloco o array no 'options' e a o select não é preenchido com os dados.

Segue o código para análise :

$paises_terms = get_posts( array( 'post_type' => 'pais') ); 
$paises_terms_keys = array(); 
$paises_terms_values = array(); 
foreach( $paises_terms as $paises_term ) { 
    array_push( $paises_terms_keys, $paises_term->ID ); 
    array_push( $paises_terms_values, $paises_term->post_title ); 
}
function cidade_metabox() {

    $cidades_metabox = new Odin_Metabox(
        'cidade', // Slug/ID of the Metabox (Required)
        'Detalhes da Cidade', // Metabox name (Required)
        'cidade', // Slug of Post Type (Optional)
        'normal', // Context (options: normal, advanced, or side) (Optional)
        'high' // Priority (options: high, core, default or low) (Optional)
    );
	
	$cidades_metabox->set_fields(
        array(
            /**
             * Default input examples.
             */
			
			array(
				'id'            => 'pais', // Obrigatório
				'label'         => __( 'Text Example', 'odin' ), // Obrigatório
				'type'          => 'select', // Obrigatório
				// 'attributes' => array(), // Opcional (atributos para input HTML/HTML5)
				//'default'       => 'three', // Opcional
				'description'   => __( 'Descrition Example', 'odin' ), // Opcional
				'options'       => $opcoes_paises
			)
)
}

agradeço a atenção desde já.

@cunhapablo, vi alguns problemas no código que acredito que podem ser o motivo.

  1. Você ta usando $opcoes_paises mas nunca declaro;
  2. O set_fields está faltando um "(" pra fechar;
$paises = get_posts( array(
	'post_type' => 'pais',
	'orderby' => 'title',
	'order' => 'ASC',
) );
$opcoes_paises = array();

foreach( $paises as $pais ) {
	$opcoes_paises[$pais->ID] = $pais->post_title;
}

$cidades_metabox->set_fields(
	array(
		/**
		 * Default input examples.
		 */
		array(
			'id'            => 'pais', // Obrigatório
			'label'         => __( 'Text Example', 'odin' ), // Obrigatório
			'type'          => 'select', // Obrigatório
			'description'   => __( 'Description Example', 'odin' ), // Opcional
			'options'       => $opcoes_paises
		)
	)
);

Atribui o resultado do get_post organizado em ordem alfabética na variável $paises e joguei o id e título e id num array de $opcoes_paises e acho que isso já resolve.