首先,它不是$wpdb->wp_posts
, 只是$wpdb->posts
.
其次,您错误地使用了prepare()。当需要将一些变量数据安全地插入到查询字符串中时,可以使用prepare,而不是其他方式。对已知字符串使用prepare不会执行任何操作并引发警告。
例如:
$data = \'example string\'
$query = $wpdb->prepare("SELECT post_title FROM {$wpdb->posts} where post_title = %s", $data);
然后,$query将是可以安全发送到$wpdb->query的SQL字符串。字符串将被转义、引用并插入到%s所在的位置。
如果没有任何需要准备好插入查询的变量数据,那么调用prepare就没有意义了。
对于您的情况,因为您没有将任何变量放入SQL,所以只需跳过prepare。
$test = $wpdb->get_var( "SELECT post_title FROM {$wpdb->posts}" );