2017-02-15 1 views
1

Alors j'essaie de réaliser ce qui suit.Comment obtenir un nom de terme de taxonomie à partir d'un objet interrogé

Mon code à ce jour ..

add_filter('wpseo_title', 'vehicle_listing_title'); 
function vehicle_listing_title($title) 
{ 
    if (get_post_type() == 'vehicles') 
    { 
    $location = get_the_terms($post->ID, 'vehicle_location'); 
    $model = get_the_terms($post->ID, 'vehicle_model'); 
    $title = $model . 'used cars for sale in' . $location .'on'. get_bloginfo('name'); 
    } 
    return $title; 
} 
  1. Ce Code a $location & $model étant un objet contenant le term_id =>,name=>,slug=>,term_group=>,etc suivant si je veux obtenir de la part de name il.
    Comment est-ce que je fais cela?

  2. Que dois-je ajouter au code pour toujours renvoyer le $title modifié, même si aucun poste n'est affecté aux taxonomies interrogées?

+0

Pour obtenir une propriété d'un objet, utilisez $ object-> property. Dans votre cas '$ location-> name'. Je ne sais pas ce que vous voulez dire au point 2. – RST

+0

OK, mais où dans le code est-ce que je mets cela? Ce que j'essaie de dire au point 2, c'est que le code ci-dessus n'est efficace que lorsqu'il y a des voitures énumérées. Je veux que le code soit toujours efficace même s'il n'y a pas encore d'annonces. J'espère que cela à du sens. –

Répondre

0

Changer votre code à ceci:

add_filter('wpseo_title', 'vehicle_listing_title'); 

function vehicle_listing_title($title) 
{ 
    if (get_post_type() == 'vehicles') 
    { 
    $location = get_the_terms($post->ID, 'vehicle_location'); 
    $model = get_the_terms($post->ID, 'vehicle_model'); 
    $title = ''; 

    if($model && $model[0]) $title .= $model[0]->name . ' used'; 
    else $title .= 'Used'; 

    $title .= ' cars for sale'; 

    if($location && $location[0]) $title .= ' in ' . $location[0]->name; 

    $title .= ' on ' . get_bloginfo('name'); 

    return $title; 
    } 

    return $title; 
} 

Fondamentalement, vous devez construire votre titre à l'aide de IF pour vérifier si le tableau de termes peut être obtenu pour le modèle et l'emplacement. En outre, wp_terms() renvoie un tableau de tableaux de termes, d'où la nécessité d'obtenir le premier élément du résultat à l'aide d'un index [0], puis de chaîner l'index ['name'] pour obtenir le nom du terme.

+0

Selon la documentation, 'get_the_terms' renvoie un tableau d'objets. Cela implique que vous ne pouvez pas utiliser '['name']' vous devrez utiliser '-> name' – RST

+0

Bon, je l'ai essayé. ça ne marche toujours pas. le code renvoie 'Erreur irrécupérable: impossible d'utiliser l'objet de type stdClass comme tableau dans functions.php' –

+0

Oh désolé, je n'ai pas vérifié le code édité. Ça fonctionne maintenant. Merci beaucoup. Cela me laisse avec le point 2. Donc ce qui se passe, c'est que les paramètres de titre précédents apparaissent encore quand il n'y a rien trouvé dans le type de publication. Je veux que votre code fonctionne même quand le "n'est pas trouvé". Est-ce possible? ou est-ce juste comment cela est supposé être –