Fiz algumas taxonomias personalizadas e preciso mostrar TODOS os termos a partir delas, o que consegui até agora é mostrar as taxonomias que são selecionadas / escolhidas em um tipo de postagem personalizado, mas preciso que todos eles mostrem, independentemente de estar selecionado ou não. Para que mais tarde eu possa fazer um filtro que filtre de acordo com os termos que um valor de tipo de postagem personalizado contém.
<?php $args=array( "public" => true, "_builtin" => false ); $output = "names"; // or objects $operator = "and"; $taxonomies=get_taxonomies($args,$output,$operator); if ($taxonomies) { foreach ($taxonomies as $taxonomy ) { $terms = get_terms($taxonomy); foreach ( $terms as $term) { ?> <li><br><a href="#"><input type="checkbox" name="profile[]" value=""><?php echo $term->name; ?> <br/></a></li> <?php } } } ?>
O que tenho até agora.
Obrigado desde já!
Comentários
- Em que ponto isso falha? Quanto funciona da maneira que você ' gostaria?
- Funciona, o problema é que só consigo mostrar o SELECIONADO termos em um tipo de postagem personalizada. Quero que todos eles mostrem, independentemente de serem selecionados ou não, não ' quero ter um tipo de postagem fictício que tenha tudo selecionado apenas para mostrá-los.
Resposta
Você precisa passar um argumento adicional para . O padrão é ocultar termos “vazios” – termos que não são atribuídos a nenhuma postagem.
$terms = get_terms([ "taxonomy" => $taxonomy, "hide_empty" => false, ]);
Comentários
- Muito obrigado! Mas eu quero perguntar algo, por que você criaria um array dentro de uma variável em vez de declarar acima, onde o primeiro array é mostrado?
- Simplicidade. Se o array de argumentos fosse mais complexo, eu o teria declarado primeiro (provavelmente), mas para um único argumento essa é apenas a maneira mais direta de fazer isso. Deve funcionar igualmente bem de qualquer maneira.
- Muito obrigado 🙂 isso pensou muito em mim. Eu realmente aprecio isso!
- Funciona !! Agora posso ver o que ' está acontecendo com todas as opções de taxonomia! Alguns plug-ins criam estruturas complexas lá.
Resposta
Desde 4.5.0, as taxonomias devem ser passadas por meio do argumento taxonomy na matriz $ args, portanto:
$terms = get_terms( array( "taxonomy" => "post_tag", "hide_empty" => false, ) );
onde os termos que não têm postagens são ocultados por padrão.
Resposta
Este código busca todas as taxonomias personalizadas de categoria e subcategoria usando get_terms()
:
<?php $wcatTerms = get_terms("product_cat", array("hide_empty" => 0, "parent" =>0)); foreach($wcatTerms as $wcatTerm) : ?> <ul> <li> <a href="<?php echo get_term_link( $wcatTerm->slug, $wcatTerm->taxonomy ); ?>"><?php echo $wcatTerm->name; ?></a> <ul class="megaSubCat"> <?php $wsubargs = array( "hierarchical" => 1, "show_option_none" => "", "hide_empty" => 0, "parent" => $wcatTerm->term_id, "taxonomy" => "product_cat" ); $wsubcats = get_categories($wsubargs); foreach ($wsubcats as $wsc): ?> <li><a href="<?php echo get_term_link( $wsc->slug, $wsc->taxonomy );?>"><?php echo $wsc->name;?></a></li> <?php endforeach; ?> </ul> </li> </ul> <?php endforeach; ?>