Eu criei um tipo de postagem personalizado e adicionei várias caixas/campos meta a esse tipo de postagem personalizado. Tudo está funcionando excelente, exceto por um elemento ...
Em vez de utilizar a interface padrão para selecionar uma taxonomia, gostaria de ter apenas um menu suspenso para o usuário selecionar.
A ideia aqui é permitir que os administradores adicionem elementos de taxonomia que possam ser gerenciados centralmente, no entanto, para uma postagem específica, ser associado apenas a uma taxonomia.
Além disso, eu preferiria apenas adicionar este drop down em uma das minhas meta caixas existentes.
Alguém tem algum código de exemplo que me permita concluir esta tarefa?
Eu respondi a esta pergunta em um post diferente: Salvando Termos de Taxonomia
Foi assim que eu fiz isso.
<?php $tax = get_object_taxonomies('TAXONOMY_NAME');
$taxterms = get_terms( $tax, 'orderby=count&offset=1&hide_empty=0&fields=all' );
?>
<select name='tax' id='tax'>
<option value='' <?php if (!count( $names )) echo "selected";?>>Select Term</option>
<?php
foreach ( $taxterms as $term ) {
echo '<option value="' . $term->slug . '" selected>' . $term->name . '</option>',"\n";
} ?>
</select>
Eu não tenho código para fazer isso, mas deve ser simples: crie um menu suspenso chamado tax_input[your_taxonomy_name]
, onde os valores são id se sua taxonomia é hierárquica (como categorias), valores se não (como tags). Se você usar esse nome, eu acho que é salvo automaticamente, sem código extra de você. Você pode criar o menu suspenso com a função wp_dropdown_categories
, passar a opção selected
com o termo de taxonomia que deve ser selecionado. A função de retorno de chamada que cria a caixa meta recebe o parâmetro $post
, para que você possa obter o termo de taxonomia atual de lá.
Para desabilitar a caixa meta que normalmente seria adicionada, você pode definir show_ui
como false ao criar a taxonomia ou remover a meta box antes que ela seja desenhada (acho que o add_meta_boxes
hook é um bom lugar). Ele terá o id tagsdiv-your_taxonomy_name
, se não for hierárquico, ou your_taxonomy_namediv
, se for o caso.