我正在使用Wordpress Plugin Boilerplate开发一个相当简单的插件。利用AJAX,我设置了一个基于按钮按下的动作,它应该从我设置的自定义数据库表中删除一个项目。 AJAX工作,按钮工作,对操作PHP文件的调用工作。
然而,当我到达操作PHP文件时,应该进行一些简单的数据库操作,没有任何反应。此时的文件包括:
global $wpdb;
$table_name['database_name'] = $wpdb->prefix . 'database_name';
echo var_dump($wpdb);
echo var_dump($table_name);
echo var_dump($wpdb->prefix);
现在就是这样。这些var转储返回“NULL”,“database_name”和“NULL”。
我在这里做错了什么?在这个项目中涉及的其他几个文件中,一切正常。我打破了什么?如果它是一个AJAX的东西而Wordpress以不同的方式处理AJAX,我很乐意看到一个很好的教程,因为我发现很少有人明确处理过Wordpress AJAX已经过时和/或破坏了。
答案 0 :(得分:0)
这意味着即使在wordpress可以初始化它之前你正在调用$wpdb
,或者你正在做更奇怪的事情
可以这样做,
jquery的
$('body').on('click', '.some-click-handler', function() {
$.ajax({
type: 'POST',
url: ajaxurl,
data: {'action':'test_ajax'},
success: function(data) {
console.log(data);
},
error: function(errorThrown) {
console.log(errorThrown);
},
});
});
你的php ajax处理程序,虽然你应该添加更多安全性,如nonce
//wp_ajax_nopriv for non logged-in user
add_action('wp_ajax_test_ajax', function() {
global $wpdb;
wp_send_json( $wpdb );
});
checkout wordpress ajax docs https://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_(action)