web-dev-qa-db-fra.com

À quel poste appartient un terme de taxonomie?

J'ai une page qui affiche tous les termes de taxonomie personnalisés pour un type particulier que je reçois à partir de l'URL. J'utilise ce code pour récupérer tous les termes:

$args = array(
'post_type' => 'mycustomposttype',
'programtype' => ’my-custom-taxonomy-term
);
$programtype = new WP_Query($args);
while ( $programtype->have_posts() ) : $programtype->the_post();
$terms = get_the_terms( $post->ID, 'my-custom-taxonomy );

Tout cela fonctionne parfaitement, mais je souhaite ensuite créer un lien lorsque vous appuyez sur chacun des termes pour rediriger vers la publication personnalisée originale à laquelle il appartient.

Permettez-moi de vous donner un exemple: le type de publication personnalisé "Programblock" avec l'ID 19 est associé à trois termes de taxonomie personnalisés, appelés "événements". Les trois termes sont répertoriés sur la page mentionnée ci-dessus, mais je souhaite ensuite créer un lien les ramenant à la page de type de message personnalisée "Programblock" avec l'ID de message sous forme de hashtag, comme suit: http://www.my-domain.com/programblock#19

Comment puis-je inverser la situation au lieu de demander "De quels termes est-ce que cette publication a", je veux demander, "À quelle publication appartient ce terme".

J'espère m'être expliqué assez clairement, sinon demandez s'il vous plaît.

Sincère
- Mestika

1
Mestika

Vous pouvez le faire en utilisant le filtre term_link. Quelque chose à peu près comme suit:

function my_term_link($termlink, $term, $taxonomy) {
   global $post;
   if ($taxonomy == 'my-custom-taxonomy') {
      return get_permalink( $post->ID ) . '#' . $term->term_id;
   }
}

while ( $programtype->have_posts() ) : $programtype->the_post();
   $terms = get_the_terms( $post->ID, 'my-custom-taxonomy' );
   add_filter('term_link', 'my_term_link', 10, 3);
   foreach ($terms as $term) {
      $link = get_term_link( $term, 'my-custom-taxonomy' );
      // Use link here
   }
   remove_filter('term_link', 'my_term_link', 10, 3);
endwhile;
1
Ben Huson