当您直接调用数据库而不是使用$wpdb
对象的速度更快,原因很简单,即您只调用数据库,并且$wpdb
在您可以使用$wpdb
对象
您应该尝试使用WordPress Ajax api(不是真正的api,而是将Ajax与WordPress结合使用的正确方法)。基本上,您需要将代码包装在一个函数中,并确保您最终死亡:
function my_ajax_callback(){
$getLetter = $_GET[\'letter\'];
global $wpdb;
global $post;
$result = $wpdb->get_results(\'SELECT * FROM wp_posts where post_title LIKE "\'.$getLetter.\'%" AND post_status = "publish" AND post_type="post"\');
while($row = $result)
{
echo \'<a href="\' . $row["guid"] . \'">\' . $row[\'post_title\'] . \'</a><br>\';
}
die();
}
然后需要添加一个动作挂钩:
//if you want only logged in users to access this function use this hook
add_action(\'wp_ajax_ACTION_NAME\', \'my_AJAX_processing_function\');
//if you want none logged in users to access this function use this hook
add_action(\'wp_ajax_nopriv_ACTION_NAME\', \'my_AJAX_processing_function\');
*如果您希望登录的用户和来宾通过ajax访问您的功能,请添加这两个挂钩*ACTION\\u NAME必须与ajax帖子中的ACTION值匹配。
然后将ajax调用直接指向admin ajax。php并添加ACTION\\u名称:
<script type="text/javascript">
jQuery(function($) {
$(document).ready(function() {
$("#Loading").hide();
$(".letter").bind(\'click\', function(){
$("#Loading").fadeIn(); //show when submitting
var val = $(".letter").val;
var data = {action: \'ACTION_NAME\', letter: val};
$.ajax({
url:\'url to wp-admin/admin-ajax.php\',
success:function(data){
$("#Loading").fadeOut(\'fast\'); //hide when data\'s ready
$("#content1").html(data);
}
});
});
});
});
</script>
这样,它就不会只为那个ajax调用加载所有WordPress。