WordPress中的jQuery自动完成

时间:2011-01-08 作者:Andycap

我正在使用这个自动完成脚本https://github.com/agarzola/jQueryAutocompletePlugin 在我的wordpress主题中。我在页面中有一个表单,用户可以在其中指定一些标记。实际上,这就是我正在使用的代码,它工作得很好。

    <script>
        jQuery(function() {
            var data = \'<?php global $wpdb; $search_tags = $wpdb->
                   get_results("SELECT name FROM $wpdb->terms"); 
                      foreach ($search_tags as $mytag){ echo $mytag->name. " "; } ?>\'.split(" ");
         $("#tags").autocomplete(data,{multiple: true});
            });
</script>
现在,问题是,当我加载页面时,这种查询会将所有标记放在一个数组中。如果您有100个标签,这可能会起作用,但我们有更多标签。该脚本还具有“从远程脚本自动完成”选项,如下所示:

<script type="text/javascript">
jQuery().ready(function() {
    $("#tags").autocomplete("<?php bloginfo(\'template_url\'); ?>/get-tags.php", 
    {
        width: 260,
        matchContains: true,
        selectFirst: false,
        multiple: true
    });
});
</script>
这必须在用户键入时激活自动完成。这是get标记的代码。php(我把文件放在我的主题根目录中)

<?php


include_once(‘../../../wp-config.php’);
include_once(‘../../../wp-load.php’);
include_once(‘../../../wp-includes/wp-db.php’);


global $wpdb; 
    $search_tags = $wpdb->get_results("SELECT name FROM $wpdb->terms"); 
        foreach ($search_tags as $mytag)
            { echo $mytag->name. " "; }


?>
我什么都试过了,在网上搜索了好几个小时,但我没有找到一个如何调用get标签的解决方案。php,它给了我一个内部500错误,自动完成不再工作。谢谢

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

不要像那样包括WP。使用$_GET 而是:

...
$("#tags").autocomplete("<?php echo add_query_arg(\'get_my\', \'terms\', home_url()); ?>", 
...
主题的功能。php:

add_action(\'template_redirect\', \'terms_for_autocomplete\');
function terms_for_autocomplete(){
  if(isset($_GET[\'get_my\']) && $_GET[\'get_my\'] == \'terms\'):

    $terms = &get_terms(get_taxonomies());
    foreach ($terms as $term)
      echo "{$term->name}|{$term->name} ({$term->count} results)\\n";

    die();
  endif;
}

结束

相关推荐

如何在WordPress中管理AJAX调用和JSON

我有一个自定义的post类型,我想通过jQuery访问它,最好使用JSON。所以首先要做的事。创建一个返回/响应json的函数很容易,但我如何通过jquery访问它呢。迈克在信中写道this question, 据我所知,他把它放在wordpress的根目录中。这将使它可以使用php文件名访问-但这是推荐的吗?我宁愿把它放在插件文件夹中。我曾尝试阅读wordpress codex,但ajax调用的处理方式让我感到困惑,因为您正在将每个ajax调用发布到admin ajax。php,即使它不是管理页面?有人