Удалите теги записей из списка возвращенных терминов таксономии
Спасибо Ghosttoast за помощь в написании этого поста.
Теперь я успешно могу динамически воспроизводить все термины, связанные с таксономией. Однако, к сожалению, это также, похоже, выплевывает все теги post_tags сайта.
Итак, как я могу использовать следующий код, но не показывать стандартные теги post_tags (я бы хотел, чтобы теги post_tags были доступны для использования, просто не показывайте их в результате этого запроса)
// taxonomy term archives
$post_type = get_post_type();
$taxonomies = get_object_taxonomies($post_type);
if(!empty($taxonomies)){
foreach($taxonomies as $taxonomy){
$terms = get_terms($taxonomy);
if(!empty($terms)){
echo "<ul>";
foreach ( $terms as $term ) {
echo '<li><a href="'.get_term_link($term->slug, $taxonomy).'">'. $term->name . "</a></li>";
}
echo "</ul>";
}
}
}
1
2 answers
Используйте эту функцию, чтобы определить, является ли таксономия иерархической или нет:
Ссылка на функцию/является иерархической таксономией "Кодекс WordPress
Пример:
// taxonomy term archives
$post_type = get_post_type();
$taxonomies = get_object_taxonomies($post_type);
if(!empty($taxonomies)){
foreach($taxonomies as $taxonomy){
// only want hierarchical -- no tags please
if(is_taxonomy_hierarchical($taxonomy)){
$terms = get_terms($taxonomy);
if(!empty($terms)){
echo "<ul>";
foreach ( $terms as $term ) {
echo '<li><a href="'.get_term_link($term->slug, $taxonomy).'">'. $term->name . "</a></li>";
}
echo "</ul>";
}
}
}
} // this was missing
1
Author: GhostToast, 2013-06-19 00:35:27
Не уверен, что вы подразумеваете под "Я хотел бы сохранить теги post_tags доступными для использования", но я вижу здесь два варианта:
$post_type = get_post_type();
$taxonomies = get_object_taxonomies($post_type);
$taxonomies = array_diff($taxonomies,array('post_tag'));
// and then your Loop
Или...
$post_type = get_post_type();
$taxonomies = get_object_taxonomies($post_type);
if(!empty($taxonomies)){
foreach($taxonomies as $taxonomy){
if ('post_tag' === $taxonomy) continue;
$terms = get_terms($taxonomy);
if(!empty($terms)){
echo "<ul>";
foreach ( $terms as $term ) {
echo '<li><a href="'.get_term_link($term->slug, $taxonomy).'">'. $term->name . "</a></li>";
}
echo "</ul>";
}
}
}
1
Author: s_ha_dum, 2013-06-18 16:59:08