从wp-Query获取数据,在循环之外&不更改url

时间:2013-01-16 作者:daco.marseille

我正在基于自定义分类法在wordpress上进行高级搜索。我已经被困72小时了,所以我希望能得到一些帮助或思考。。。

步骤1——在js文件中,查询字符串如下所示:

if (jQuery(\'#s\').val() == \'\'){
URL = "/?genre=" + genre + \'...other Stuff\' #content\';
}else{
URL = "/?s="+searchQueryString+"&genre=" + genre +\'...other stuff\' #content\';
}
它可以很好地将我的自定义循环加载到我的#content div中,而无需更改浏览器url或重新加载标题,这非常好。。。目前为止::-)

第二步——然后我在函数中写了两个函数。php,在主页上加载带有GET[]元素的循环,使用new WP_Query 还有一个对搜索查询执行相同的操作,但只使用以下内容进行筛选:

add_action(\'pre_get_posts\',\'SearchFilter\');
正在使用内容中的GET编译我的GET[]筛选器。php,仍然很好。。。。

步骤3(问题)---

我想添加一个css类来取消位于标题中的单选按钮的激活。php,具体取决于循环中的结果。

Try-1我想我可以创建一个php数组来编译循环发生时找到的术语,然后将其与我的按钮值进行比较。就像这样:

$args = array(\'orderby\' => \'name\', \'order\' => \'ASC\', \'fields\' => \'slugs\');
$results = wp_get_post_terms(get_the_ID(),\'category\',$args);  
foreach ($results as $result){
    array_push($stack, $result);

}
但无法在afterwhile中从标头中的该数组中检索数据,也无法使用以下内容从标头创建数据global $post;因为我的url没有改变。它只显示主页查询。

Try-2我还认为可以将其编码为json,然后在js文件中执行一些操作。但到目前为止,它只返回了json意外的字符,我觉得即使我破解它,也不会是正确的方法,因为它会使js文件更重。

也许我只是缺少了一些关于全局wp\\u查询的信息,我不需要对脚本收费?

请原谅我的英语和冗长的问题,

如果你有想法,请提前多谢,

达科

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

听起来你在找wp_localize_script() 它允许您将数据传递给已排队的脚本。

其工作原理大致如下:

<?php    
// assuming your script is already registered
wp_enqueue_script( \'wpse_81817\' );

// Do the array building of terms you plan on doing
$wpse_81817_phpdata = array( \'myKey\' => \'a value\' );

// Pass that to the JS
wp_localize_script( \'wpse_81817\', \'wpse_81817_jsdata\', $wpse_81817_phpdata );
然后,在你的wpse_81817 脚本,您可以获取如下数据:

print wpse_81817_jsdata.myKey;
应返回:

\'a value\'

结束