Alterando a Aparência de Entradas de Taxonomia Customizada

14

Estou trabalhando em um site que fará uso de algumas taxonomias personalizadas (para tipos de postagem personalizados). Eu escolhi tornar algumas taxonomias hierárquicas porque o método de inserir valores (caixas de seleção) é mais desejável para este site do que a entrada de forma livre de taxonomias não hierárquicas. No entanto, o que eu realmente gostaria é poder usar entradas de botão de opção em vez de caixas de seleção. Além disso, eu gostaria de remover o menu suspenso usado para escolher o item pai na taxonomia. captura de tela

Estou fazendo isso da maneira errada? Devo começar com taxonomias não hierárquicas e modificar os métodos de entrada neles? Estou completamente aberto a sugestões e terei prazer em responder a quaisquer perguntas ou fornecer mais informações, se puder.

Travis Northcutt
fonte
+1 boa pergunta. Isso também seria bom para um projeto no qual estou trabalhando também. Além disso, faça com que a taxonomia personalizada seja um menu suspenso em vez de uma lista de "categorias".
Zack
Sim, um menu suspenso também seria ótimo.
Travis Northcutt
1
Esses dois parecem estar lidando com um problema muito semelhante: Tipo de postagem personalizada - menu suspenso de taxonomia? e precisam de ajuda para Saving Taxonomia Termos
Michal Mau
Em vez de tentar modificar a metabox existente, o que você deve fazer é remover a metabox padrão para a taxonomia especificada e, em seguida, registrar a sua própria para chamar uma função personalizada que exibe os termos em um grupo de rádio, e isso pode estar relacionado ao dois links fornecidos acima por maugly.
T31os

Respostas:

13

Claro, basta usar CSS e o 'admin_head'gancho para fazê-lo desaparecer. Eu acredito que é isso que você está procurando?

Entrada de taxonomia hierárquica na página de postagem do WordPress sem o pai
(fonte: mikeschinkel.com )

Basta adicionar o seguinte ao functions.phparquivo do seu tema ou ao .phparquivo de um plug-in que você possa estar escrevendo. Observe que incluí um 'init'gancho para definir o tipo de postagem "Casa" e a taxonomia "Banho" para que outras pessoas possam seguir o exemplo com mais facilidade. Observe também que, se sua taxonomia se chama Baths ", será necessário alterar o seletor de CSS para o #newbaths_parentlugar de #newbath_parent:

add_action('admin_head','remove_bath_parents');
function remove_bath_parents() {
  global $pagenow;
  if (in_array($pagenow,array('post-new.php','post.php'))) { // Only for the post add & edit pages
    $css=<<<STYLE
<style>
<!--
#newbath_parent {
  display:none;
}
-->
</style>
STYLE;
    echo $css;
  }
}
add_action('init','add_homes_and_baths');
function add_homes_and_baths() {
  register_post_type('home',
    array(
      'label'           => 'Homes',
      'public'          => true,
      'rewrite'         => array('slug' => 'homes'),
      'hierarchical'    => false,
    )
  );
  register_taxonomy('bath', 'home', array(
    'hierarchical'    => true,
    'label'           => 'Baths',
    'rewrite'         => array('slug' => 'baths' ),
    )
  );
}

ATUALIZAR

Parece que perdi a parte do botão de opção da pergunta. Infelizmente, o WordPress não facilita isso, mas você pode fazer isso usando o buffer de saída PHP (através das funções ob_start()e ob_get_clean().) Basta encontrar um gancho antes da saída do metabox ( 'add_meta_boxes') e um gancho após a saída ( 'dbx_post_sidebar') e depois pesquisar HTML para 'checkbox'e substitua por 'radio', faça eco na tela e pronto! O código a seguir:

add_action('add_meta_boxes','mysite_add_meta_boxes',10,2);
function mysite_add_meta_boxes($post_type, $post) {
  ob_start();
}
add_action('dbx_post_sidebar','mysite_dbx_post_sidebar');
function mysite_dbx_post_sidebar() {
  $html = ob_get_clean();
  $html = str_replace('"checkbox"','"radio"',$html);
  echo $html;
}

E a evidência:

Captura de tela mostrando taxonomias usando botões de opção
(fonte: mikeschinkel.com )

MikeSchinkel
fonte
1
"Olhe Ma, nenhum campo pai!" Mike, você me fez rir! : D
Michal Mau
@ maugly - Esse é o meu padrão. : D
MikeSchinkel
@haha - Que bom que você gostou. :)
MikeSchinkel
Fantástico, como sempre.
Travis Northcutt
1
@tnorthcutt - Francamente, eu recomendo codificar sua própria metabox. Foi o que eu fiz e realmente não é difícil para isso. Basta fazer uma fonte de visualização, correspondência <input>e <select>nomes e você nem precisará fazer nada para capturar a taxonomia; O WordPress fará isso por você. OU, use um campo personalizado e ignore a taxonomia que pode ser um exagero para isso.
MikeSchinkel
2

ou, se você estiver com preguiça, use este plug-in: interface do usuário de taxonomia de valor único

(Prefiro adicionar isso como um comentário à resposta de Mike, pois geralmente faz a mesma coisa - mas ainda não consigo adicionar comentários)

pax
fonte
Infelizmente, nenhuma atualização em dois anos :( Isso realmente é algo que o WP deve adicionar suporte básico, pois muitas pessoas usariam taxonomias de um termo por objeto se fosse uma opção (por exemplo, use taxonomias em vez de meta quando o desempenho da consulta for importante).
Jerclarke