2017-03-07 6 views
0

私はカスタムポストタイプの$titleをフィルタリングするために、このコードを使用している、と検索結果がパリでの販売のためのメルセデスベンツ車のためのクエリが$title 投稿タイプのアーカイブに投稿タイプのタイトルを正しくフィルタリングするにはどうすればよいですか?

Mercedes Benz used cars for sale in Paris on Sitenameこのような
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[0]->name . 'used cars for sale in' . $location[0]->name .'on'. get_bloginfo('name'); 
    } 
    return $title; 
} 
を示すだろう、たとえばがある場合、それは完全に正常に動作します

しかし、何も検索結果がないとき、コードは単一の用語のタイトルを返します。例えば、パリで販売されているメルセデスベンツ車のクエリは、$titleのように表示されます。Mercedes Benz archives – Sitename フィルタリングされたものが返されます。$titleすべての検索カスタムの投稿タイプからこれらのリンクを取得するサイトマップがあるためです。だから私は明らかにSEOの理由でこれを機能させる必要があります。

私はしばらくの間これを苦労してきました。 助けていただければ幸いです

答えて

0

あなたは単にelse文を必要としませんか?

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[0]->name . 'used cars for sale in' . $location[0]->name .'on'. get_bloginfo('name'); 
    }else{ 
    $title = 'Sorry there are no' . $model[0]->name . 'used cars for sale in' . $location[0]->name .'on'. get_bloginfo('name'); 
    } 

return $title; 
} 

これは動作しない場合は多分これでしょう:

elseif(/*there are no results or post_count = 0 */) 

あいまいなのelseifについては申し訳ありませんが、私はそれが検索またはCPTのアーカイブの場合は、結果を取得しているかどうかはわかりません。

関連する問題