wp_query() get_col error

时间:2012-07-30 作者:Majed

我试图通过使用AJAX将数据发送到数据库并返回到搜索字段来创建一个自动搜索jQuery函数。

在我的wordpress主题中,我创建了一个名为“include”的文件夹,并在其中创建了一个名为“autoSearch.php”的文件

在该文件中,我的PHP代码如下所示:

global $wpdb;

$searchQuery = mysql_escape_string($_POST[\'value\']);

$mypostids = $wpdb->get_col("SELECT ID FROM $wpdb->posts WHERE post_title LIKE \'$searchQuery\' LIMIT 5");

$args = array(\'post__in=\'.$mypostids);

$res = new WP_Query($arg);  

$titles ="";

while ( $res->have_posts() ) : $res->the_post();
    $titles .= get_the_title().\'<br />\';
endwhile;

echo json_encode(array("everything"=>$titles));
wp_reset_postdata();
但是,我得到了一个错误:致命错误:对非对象调用成员函数get\\u col()。

我不知道为什么会这样。提前谢谢你的帮助。

1 个回复
最合适的回答,由SO网友:mrwweb 整理而成

更新,回答正确:使用AJAX调用时,核心WordPress函数无法访问。正确的处理方法包括"AJAX in Plugins" 在法典上。

原始答案并没有解决问题,但将来可能会让其他人感兴趣。

这里有另一种避免直接查询DB的方法。您将替换所有代码,包括$res = ... 行:

// get search term
$search_query = mysql_escape_string($_POST[\'value\']);
// args for get_posts
$my_post_args = array( \'s\' => $search_query, \'fields\' => \'ids\' );
// get array of post IDs (see "fields" argument above)
$my_post_ids = get_posts( $my_post_args );
// now WP_Query args
$res_args = array( \'post__in=\' . $my_post_ids );
// make sure that the args parameter matches (it doesn\'t in your code snippet)
$res = new WP_Query( $res_args );
// etc...

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post