2017-02-15 136 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点。所以会发生什么,是当在帖子类型中没有找到任何东西时,以前的标题设置仍然显示出来。我希望你的代码在没有找到的情况下工作。这可能吗?或者只是它是如何设想的 –