Поэтому я пытаюсь добиться следующего.
Мой код до сих пор ..
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;
}
Этот код приводит к $location
& $model
будучи объектом, содержащим следующее term_id =>,name=>,slug=>,term_group=>,etc
так что я хочу получить name
Часть этого.
Как я могу это сделать?
Что мне нужно добавить в код, чтобы все еще возвращать измененный $title
даже если нет никаких должностей, назначенных запрашиваемым таксономиям?
Измените свой код на это:
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']
Индекс, чтобы получить название термина.
Других решений пока нет …