2017-02-03 13 views
0

Я пытаюсь отфильтровать название типа А пост, и я получил этуCatchable фатальная ошибка: Объект класса StdClass не может быть преобразован в строку в строке 125 ...... в WordPress

Catchable fatal error: Object of class stdClass could not be converted to string in line 125

Вот код, который я использовал ...

add_filter('wpseo_title', 'vehicle_listing_title', 10, 1); 
function vehicle_listing_title($title) { 
    global $post; 
    if (get_post_type() == 'vehicles'){ 

     $model = get_queried_object('vehicle_model'); 
     $location = get_queried_object('vehicle_location'); 
     $title = $model . "used cars for sale in" . $location .'on'. get_bloginfo('name'); <---- this is line 125 
    } 

    return $title; 
    } 
+1

Блин, название говорит о том, что 'get_queried_object' должен возвращать объект, который вы только конкатенировать его бечевкой и не реализует' __toString' я полагаю. Попробуйте 'var_dump ($ model, $ location)' и посмотрим. – Chay22

ответ

0

get_queried_object() не разрешать параметры.

Попробуйте это:

$post = get_queried_object(); 
$location = $post->post_title; 

Может быть, ваш vehicle_model и vehicle_location являются мета-поля, тогда вы должны использовать функцию get_post_meta()

Вы используете какой-либо плагин, который расширяет ваши сообщения поля, как Advance-Пот- Поля?

EDIT: посмотрите комментарии, вы используете плагин ACF. Так что ваш код должен быть:

add_filter('wpseo_title', 'vehicle_listing_title', 10, 1); 
function vehicle_listing_title($title) { 
    if (get_post_type() == 'vehicles'){ 

     $model = get_field('vehicle_model'); 
     $location = get_field('vehicle_location'); 
     $title = $model . "used cars for sale in" . $location .'on'. get_bloginfo('name'); 
    } 

    return $title; 
} 
+0

Оба предложения вернулись просто «подержанные автомобили для продажи по sitename» без заголовков. Да, я использую плагин ACF. –

+0

, тогда вы можете легко получить значения с помощью 'get_field ('vehicle_model', $ postId);' посмотреть на документы: https://www.advancedcustomfields.com/resources/get_field/ – Sysix

+0

Хорошо, я уже пробовал это, он также возвращался отфильтрованный заголовок без заголовков сообщений. Я также попробовал '$ vehicle_location = get_queried_object_id ('vehicle_location')' он возвращает '760used cars для продажи in760on sitename', что похоже на шаг ближе к требуемому результату. вы не знаете, как изменить его с id на имя? –

0

в зависимости от содержания $ объекта местоположения потенциально вы можете использовать print_r(), чтобы получить это в названии.

 $title = print_r($model, true) . "used cars for sale in" . print_r($location, true) .'on'. get_bloginfo('name'); <---- this is line 125 

The true говорит функции вернуть результат, а не эхо его.

Если объект имеет внутреннюю структуру, что вам нужно, чтобы получить данные внутри, то вы могли бы сделать что-то вроде этого:

$title = $model[0] . "used cars for sale in" . $location[0] .'on'. get_bloginfo('name'); <---- this is line 125 

А выход var_dump($location); var_dump($model); воли полного содержания объекта, так что вы можете увидеть их структуры , Просто замените «0» внутри [0] ключом (или несколькими ключами IE $model[0][0][0]) нужного элемента.

Кроме того, я вижу, что у вас уже есть объект post ($post). Возможно, вы могли бы заглянуть внутрь этого объекта и посмотреть, есть ли там модель и местоположение? var_dump($post);

+0

Хорошо, я попробовал, и он все еще возвращает то же самое. это то, что я получил с 'print_r()' 'stdClass ([term_id] => 760 [name] => london [slug] => London [term_group] => 0 [term_taxonomy_id] => 760 [taxonomy] => vehicle_location [description] => [parent] => 19 [count] => 0 [filter] => raw) подержанные автомобили для продажи instdClass Object ([term_id] => 760 [name] => London [slug] => London [ term_group] => 0 [term_taxonomy_id] => 760 [taxonomy] => vehicle_location [description] => [parent] => 19 [count] => 0 [filter] => raw) on sitename ' –

 Смежные вопросы

  • Нет связанных вопросов^_^