Att*_*tak 3 php ajax wordpress
我在wordpress中执行jquery ajax请求.这称为内部php脚本.这个PHP脚本需要能够访问某些wordpress功能,如... functions.php,这对我来说很简单.我无法做的是访问当前wordpress用户,$ wpdb对象的信息.我的问题是...是否有一些wordpress文件,我可以包含,这使我可以访问所有数据(和functions.php).我希望你理解我正在访问的东西,因为我知道这可能是世界上最彻底的解释:D
dig*_*rld 10
糟糕的方式(正如其他人所指出的那样)
当我创建一些自定义PHP与wordpress一起使用时,我包含了该wp-load.php
文件.然后加载所需的一切,包括$wpdb
.
require_once('wp-load.php'); // relative path from your PHP file
global $wpdb;
$wpdb->show_errors = TRUE; // useful for when you first start
Run Code Online (Sandbox Code Playgroud)
我发现这是一个很好的起点,可以快速修复.但是你必须记住,这将加载比你实际需要的功能更多的功能.因此导致性能时间变慢.
好方法
一旦功能变得更加复杂,"糟糕"的实施并不是那么好.所以我转而编写插件.WordPress codex包含有关使用AJAX和插件的良好信息:http://codex.wordpress.org/AJAX_in_Plugins
在最基本的形式中,您需要注册您的AJAX钩子:
// 'wp_ajax_foo' is the hook, 'foo' is the function that handles the request
add_action( 'wp_ajax_foo', 'foo');
Run Code Online (Sandbox Code Playgroud)
您还需要相应的功能(在本例中foo
):
function foo() {
// handle the AJAX request
$bar = $_POST['bar'];
}
Run Code Online (Sandbox Code Playgroud)
然后在您的JavaScript中,您可以识别要与action
属性一起使用的挂钩,但忽略该wp_ajax
部分:
$.post(ajaxurl, { action: 'foo', bar: true }, function(response) {
// do something with response
});
Run Code Online (Sandbox Code Playgroud)