J'essaie d'afficher toutes les catégories appartenant au type de publication personnalisé dans lequel l'utilisateur se trouve.
Par exemple, cet article: http://bit.ly/1ANisxN Il s'agit d'un type d'article personnalisé appartenant à cette catégorie de page: http://bit.ly/1FYscKh
Comme vous pouvez le voir, la catégorie de page présente les catégories enfants, ce qui est exactement ce que je souhaite réaliser par la poste personnalisée: i.imgur.com/vk4K31T.png
C’est ce que j’ai essayé dans le message personnalisé d’afficher les catégories de parents sans succès:
<?php echo get_category_parents() ?>
À propos, voici comment la page de catégorie fait écho à ses sous-catégories:
<?php
$terms = get_terms( 'btp_work_category' );
foreach ( $terms as $term ) {
?>
<li><a href="#" data-filter=".filter-<?php echo $term->term_id; ?>"><?php echo $term->name; ?></a></li>
<?php
}
?>
Une idée sur comment faire cela?
Par exemple cette structure de catégorie:
Electronique (Top catégorie)
Caméras (sous catégorie)
TV (sous catégorie)
Téléphones portables (sous catégorie)
Donc, si je suis sur un post cameras
, je veux afficher la première catégorie et ses sous-catégories (qui sont relatives à cameras
car elles sont toutes dans la catégorie "Électronique")
Si vous êtes dans le modèle de publication personnalisée unique, vous pouvez obtenir les termes auxquels la publication appartient en utilisant
$terms = get_the_terms( get_the_ID(), 'btp_work_category' );
Ensuite, vous devez déterminer le terme parent et l'afficher avec ses enfants.
Le code ci-dessous suppose que la publication appartient à une catégorie supérieure (terme) et que l’arbre de taxonomie n’a pas plus de 2 niveaux.
$terms = get_the_terms( get_the_ID(), 'btp_work_category' );
if ( ! empty( $terms ) ) :
echo "<ul>\n";
// Parent term detection and display
$term = array_pop( $terms );
$parent_term = ( $term->parent ? get_term( $term->parent, 'btp_work_category' ) : $term );
echo "<li>\n";
echo '<a href="' . get_term_link( $parent_term, 'btp_work_category' ) . '">' . $parent_term->name . '</a>';
// Getting children
$child_terms = get_term_children( $parent_term->term_id, 'btp_work_category' );
if ( ! empty( $child_terms ) ) :
echo "\n<ul>\n";
foreach ( $child_terms as $child_term_id ) :
$child_term = get_term_by( 'id', $child_term_id, 'btp_work_category' );
echo '<li><a href="' . get_term_link( $child_term, 'btp_work_category' ) . '">' . $child_term->name . "</a></li>\n";
endforeach;
echo "</ul>\n";
endif; // ( ! empty( $child_terms ) )
echo "</li>\n";
echo "</ul>\n";
endif; // ( ! empty( $terms ) )
Voici quelque chose qui devrait un peu marcher ... malgré le fait que les CPT n'ont pas de catégorie parent comme le font les articles WP.
function get_cpt_parent_cat_aka_taxonomy() {
global $post;
$parent_tax_name = 'Undefined parent taxonomy!';
$obj_taxonomies = get_object_taxonomies( $post->post_type, 'objects' );
$slugs = array();
if( !empty( $obj_taxonomies ) ) {
foreach ( $obj_taxonomies as $key => $tax ) {
if( $tax->show_ui === true && $tax->public === true && $tax->hierarchical !== false ) {
array_Push( $slugs, $tax->name );
}
}
$terms = wp_get_post_terms( $post->ID, $slugs );
$term = get_term( $terms[ 0 ]->term_id, $terms[ 0 ]->taxonomy );
$parent_tax_name = $term->name;
}
return $parent_tax_name;
}