2017-02-15 78 views
1

所以我試圖實現以下內容。如何從查詢對象中獲取分類術語名稱

到目前爲止我的代碼..

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. 該代碼產生$location & $model是包含以下term_id =>,name=>,slug=>,term_group=>,etc,所以我想它的name部分的對象。
    我該怎麼做?

  2. 即使沒有任何職位分配給查詢分類法,我還需要添加什麼代碼才能返回修改後的$title

+0

要從對象中獲取屬性,請使用$ object-> property。在你的情況'$ location-> name'。不知道你在第2點是什麼意思。 – RST

+0

沒問題,但是我在代碼中放哪?我在第二點想說的是,上面的代碼只有在有汽車列出時纔有效。即使沒有任何物品清單,我也希望代碼仍然有效。我希望這是有道理的。 –

回答

0

你的代碼改成這樣:

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; 
} 

基本上,你需要使用IF的檢查,如果條件陣列可以對模型和位置獲得來構建你的標題。此外,wp_terms()返回一個數組數組,因此爲什麼還需要使用[0]索引獲得結果的第一個元素,然後鏈接['name']索引以獲取該術語的名稱。

+0

根據文檔,'get_the_terms'返回一個對象數組。這意味着你不能使用'['name']'你必須使用' - > name' – RST

+0

好吧,我試過了。它仍然不起作用。代碼返回'致命錯誤:不能使用stdClass類型的對象作爲functions.php中的數組' –

+0

對不起,我沒有檢查編輯過的代碼。它現在有效。非常感謝。這讓我有了第2點。所以會發生什麼,是當在帖子類型中沒有找到任何東西時,以前的標題設置仍然顯示出來。我希望你的代碼在沒有找到的情況下工作。這可能嗎?或者只是它是如何設想的 –