web-dev-qa-db-fra.com

Identifiez-vous à la taxonomie personnalisée sur une page de modèle personnalisée à post-type-type.php

J'ai un "sermon" personnalisé de type post auquel est attaché un "haut-parleur" de taxonomie personnalisée. Je voulais attribuer des méta-valeurs personnalisées à la taxonomie des locuteurs. J'utilise donc la méta-classe de taxonomie de Rilwis:

http://www.deluxeblogtips.com/p/taxonomy-meta-script-for-wordpress.html

J'ai utilisé la classe pour ajouter un metabox avec l'id de 'bio'.

Selon ses instructions, je dois utiliser le code suivant pour afficher la valeur de la méta 'bio' dans mon modèle:

$meta = get_option('meta_id');
if (empty($meta)) $meta = array();
if (!is_array($meta)) $meta = (array) $meta;

$meta = isset($meta['term_id']) ? $meta['term_id'] : array();

$value = $meta['field_id'];

echo $value; // if you want to show

Voici ce qui a finalement fonctionné pour moi:

$taxmeta = get_option('speaker_meta');
if (empty($taxmeta)) $taxmeta = array();
if (!is_array($taxmeta)) $taxmeta = (array) $meta;

$taxmeta = isset($taxmeta['221']) ? $taxmeta['221'] : array();

$value = $taxmeta['bio'];

echo $value; // if you want to show

Question

Dans le code ci-dessus, vous voyez le numéro "221". C'est le terme-id actuel de la taxonomie attribuée au poste en question (codé en dur pour le tester). Ce que je ne comprends pas, c'est comment renseigner dynamiquement le term_id.

Je ne peux pas interroger l'URL car elle est simplement utilisée sur une seule page de post-type personnalisée. Le terme-id n'y est donc pas disponible.

Comment pourrais-je modifier cet extrait pour insérer le terme-id approprié appartenant au "sermon" que je regarde?

merci

edit

Cette fonction me renvoie le term_id approprié:

$terms = wp_get_post_terms($post->ID, "speaker");
foreach ($terms as $termid) {  
echo $termid->term_id;
} 

L'utilisation de cet extrait de code dans ma boucle sur la page d'exemple renvoie la valeur "221". Si je mets manuellement 221 à la place de term_id dans la fonction, le terme méta 'bio' sera alors parfaitement tiré.

Où je suis toujours bloqué

Maintenant que j'ai ce petit extrait au-dessus de qui fonctionne, comment puis-je l'exporter en sortie vers term_id pour que la fonction principale fonctionne?

$meta = isset($meta['term_id']) ? $meta['term_id'] : array();

merci encore

1
shawn

vous pouvez utiliser la fonction get_the_terms() pour obtenir les termes de cette publication dans une taxonomie spécifique:

$terms = get_the_terms( $post->ID , 'speaker' ); //change speaker to whatever you call your taxonomy
//then you can use just the first term
$term_id = $terms[0]->term_id;

et maintenant vous avez le terme id dans $term_id.

mettre à jour

Une fois que vous avez le term_id, vous pouvez l'utiliser dans votre fonction comme ceci:

$term_id = $termid->term_id;

$meta = isset($meta[$term_id]) ? $meta[$term_id] : array();
1
Bainternet

Vous pouvez le faire avec la fonction wp_get_post_terms() également:

$terms = wp_get_post_terms($post->ID, "speaker");
foreach ($terms as $termid) {  
  echo $termid->term_id;  
} 

il affichera tous les termes de taxonomie pour le poste actuel.

NOTE: il doit être à l'intérieur de la boucle

0
KOt

Si vous êtes sur la page archive.php et avez besoin du terme actuel:

var_dump($wp_query->queried_object);
var_dump($wp_query->queried_object->name);
var_dump($wp_query->queried_object->term_id);
0
Aram Kocharyan