如何为AJAX请求在非WP脚本中正确加载WordPress

时间:2011-11-03 作者:patnz

我想在我的主题中加入一个脚本,ajax。php,我想使用ajax从其他前端页面加载或访问它。

在ajax中。php我想访问核心WP函数,如get\\u posts()、do\\u shortcode()等。也就是说,我需要在脚本上加载WordPress。

传统上,我在管理员中设置了一个页面,并为其提供了一个自定义模板,这样我就可以将ajax请求发送到www.site。com/ajax和自定义模板处理请求。虽然这样做很好,但我很确定这不是在WP前端处理ajax的最有效或最安全的方法,但我不确定如何正确地处理它。

谢谢

2 个回复
最合适的回答,由SO网友:Kevin Langley Jr. 整理而成

这样做真的不是最好的做法。事实上,您不需要创建ajax。php文件,除非您打算将其包含在函数中。php文件。您需要阅读WordPress中的AJAX。您只需在“wp\\u ajax\\u name\\u of\\u action”上添加一个操作,并在javascript ajax函数中指定该操作即可。

WordPress编解码器的简单示例:

<?php
add_action(\'admin_head\', \'my_action_javascript\');

function my_action_javascript() {
?>
<script type="text/javascript" >
jQuery(document).ready(function($) {

var data = {
    action: \'my_action\',
    whatever: 1234
};

// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
jQuery.post(ajaxurl, data, function(response) {
    alert(\'Got this from the server: \' + response);
});
});
</script>
<?php
}
add_action(\'wp_ajax_my_action\', \'my_action_callback\');

function my_action_callback() {
global $wpdb; // this is how you get access to the database

$whatever = intval( $_POST[\'whatever\'] );

$whatever += 10;

    echo $whatever;

die(); // this is required to return a proper result
} 

SO网友:Milo

有关如何正确使用的信息,请参阅codex页面AJAX in plugins. 同样的动作也适用于主题的功能。php也是如此。

另请参见this blog post 有关更多代码示例,请链接到上述codex页面。

结束

相关推荐

jQuery AJAX form validation

我正在尝试为我的站点创建一个自定义登录页面,即http://localhost/site/login, 我现在遇到的问题是,当用户尝试登录并输入错误的用户名或密码时,他们会被重定向到wp-login.php 您可以想象,这是一个有问题的页面,因此我想将AJAX表单验证添加到我的自定义表单中,但问题是我不确定如何以最佳方式进行验证。如何使用jQuery AJAX验证用户?这就是我迄今为止所做的:jQuery:$(\'#selector\').live(\'click\', function(){