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

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

我正在尝试过滤掉 post 类型的标题,但我得到了这个

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

根据 $location object 的内容,您可能会使用 print_r() 将其添加到标题中。

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

true 告诉函数 return 结果而不是回显它。

如果你的 object 有一个你需要从内部获取数据的内部结构,那么你可以这样做:

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

A var_dump($location); var_dump($model); 将输出 object 的全部内容,因此您可以看到它们的结构。只需将 [0] 中的“0”替换为您想要的项目的键(或多个键 IE $model[0][0][0])即可。

此外,我看到您那里已经有了 post object ($post)。或许您可以查看 object 内部,看看模型和位置是否存在? var_dump($post);

get_queried_object()不允许参数。

试试这个:

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

可能你的vehicle_modelvehicle_location是Meta-Fields,那么你必须使用get_post_meta()函数

您是否使用任何扩展您的 Post 字段的插件,例如 Advance-Custom-Fields?

编辑:看评论,你用的是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;
}