为了使脚本正确排队,必须使用wp_enqueue_script 像这样:
wp_enqueue_script( \'suggest\', get_template_directory_uri() . \'/js/path/to/suggest.js\', array(\'jquery\'), \'1.0.0\', true );
第二个参数是JavaScript文件的路径,第三个参数是脚本所依赖的依赖项(由于suggest是一个jquery插件,必须在jquery之后加载)。
如果您正在使用this, 恐怕您对建议插件的调用是错误的。你先去拿条款。
我个人建议你使用jquery ui autocomplete. 我是这样实现的:
function my_autocomplete()
{
$query = new WP_Query(array(\'post_type\'=>\'page\',\'posts_per_page\'=>-1));
$tab = array();
foreach ($query->posts as $p) {
$tab[] =array(\'value\'=>$p->post_title,\'url\'=>get_the_permalink($p));
}
die(json_encode($tab));
}
add_action( \'wp_ajax_nopriv_my_autocomplete\', \'my_autocomplete\' );
add_action( \'wp_ajax_my_autocomplete\', \'my_autocomplete\' );
以上代码在我的函数中。php(因为你正在做一个插件,所以它可以在你的插件中)。您可以将post\\u类型更改为您想要查询的任何内容。您还必须将jquery ui排队,方法如下:
wp_register_script(\'jqui\', \'https://code.jquery.com/ui/1.11.4/jquery-ui.min.js\', array(\'jquery\')); // Conditional script(s)
wp_enqueue_script(\'jqui\'); // Enqueue it!
然后在我的页脚。php我有
<script type="text/javascript">
var ajaxUrl = "/wp-admin/admin-ajax.php";
</script>
以定义自动完成所需的ajax url。最后,实际的javascript自动完成代码(假设您的输入具有类搜索输入):
var data = {
action : \'my_autocomplete\'
}
$.post(ajaxUrl,data,function(res){
$( ".search-input" ).autocomplete({
minLength: 0,
source: function(request, response) {
var results = $.ui.autocomplete.filter(res, request.term);
response(results.slice(0, 10));
}
})
.autocomplete( "instance" )._renderItem = function( ul, item ) {
return $( "<li>" )
.append( "<a href=\'"+item.url+"\'>" + item.value +"</a>" )
.appendTo( ul );
};
},\'JSON\');
因此,当它加载时,它会获取您的所有页面标题并提供您的。使用页面url自动完成搜索输入。此处的设置将自动完成结果限制为10,以避免庞大的列表。
如果有大量页面,则可能无法采用此解决方案。
希望它能帮助你。