看起来拉维·辛德是对的:
您共享的代码可以在核心PHP中工作,而不能在Wordpress中工作。Wordpress文档中解释了在Wordpress插件中使用AJAX。请参考-https://codex.wordpress.org/AJAX_in_Plugins
要让插件访问ajax界面,您需要围绕WordPress的ajax操作进行包装wp_ajax_{action}
首先,您需要定义操作:
add_action( \'wp_ajax_user_action\', \'user_action\' );
add_action( \'wp_ajax_nopriv_user_action\', \'user_action\' );
其中注册了
user_action
对于登录用户和未经身份验证的用户,使用wordpress。
然后构建处理函数:
function user_action() {
// since this gets loaded by wordpress
// you get access to $wpdb and other
// core functions
global $wpdb;
$state_name = $_POST[\'name\'];
$wpdb->insert( \'state\',array( \'state_name\' => $state_n),array(\'%s\') );
$status = $wpdb->insert_id;
echo $status ? \'ok\' : var_dump($wpdb);
// Ajax calls in WP always need to be closed with wp_die:
wp_die();
}
最后,您需要获取端点的引用(wordpress为所有ajax调用共享一个URL)。在您的JS中:
var ajaxurl = <?php echo admin_url( \'admin-ajax.php\' ); ?>;
注意:注册脚本的“正确”方法是通过
enqueue_scripts
, 但这超出了我们目前的范围。
然后您可以对ajaxurl
和通过{ action: \'user_action\' }
作为数据。
说实话这不是最好的方式,但你会习惯的。如果您需要初级读物,Smashinmag总是有很棒的文章:
https://www.smashingmagazine.com/2011/10/how-to-use-ajax-in-wordpress/
(另外:我还没有测试过代码,但它非常标准,应该可以开箱即用。让我知道!)