我正在使用这个自动完成脚本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错误,自动完成不再工作。谢谢
最合适的回答,由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;
}