我正在开发一个使用自定义模板/主题的wordpress网站,但我遇到了麻烦。我想使用Ajax在用户单击按钮时调用函数。在一个页面上,我有一个这样的按钮:
<p class=\'form-submit\'>
<input name=\'message_read\' type=\'submit\' class=\'submit button mark-as-read\' value= \'Mark as read\' />
</p>
我有这样一个jQuery/Ajax函数:jQuery(document).ready(function() {
jQuery(".mark-as-read").click(function () {
console.log(\'The function is hooked up\');
jQuery.ajax({
type: "POST",
url: "/wp-admin/admin-ajax.php",
data: {
action: \'mark_message_as_read\',
},
success: function (output) {
console.log(output);
}
});
});
});
上述功能位于wp-content/themes/my-theme/js/wp_ajax_calls.js
. 我将脚本添加到网站,如下所示:1) 我将此添加到我的函数中。php文件:
wp_enqueue_script( \'ajax calls\', get_template_directory_uri() .\'/js/wp_ajax_calls.js\', array(\'jquery\'), \'1.0\', true);
2)我将脚本包含在标题中。<script type="text/javascript" src="https://mysite//wp-content/themes/twentyfifteen/js/wp_ajax_calls.js"></script>
当我按原样点击按钮时,控制台。日志语句出现。据我所知,我希望我的ajax函数调用一个php函数,该函数将允许我使用$wpdb。我在函数中有这个。php:function mark_message_as_read() {
global $wpdb;
// do stuff.
}
这就是我感到困惑的地方。我有两个主要问题:1) I think I am supposed to have some add_action() \'s somewhere, but I don\'t know where to put them and I also don\'t know what hook I should use.
2) Additionally, I want to be able to pass data (the message id) to the php function for my db query. How do I pass an argument to that function?
我不想用这样的东西if( isset($_POST[\'message_whatever\']) ) twentyfifteen_message_whatever();
因为我设置消息的方式。如果需要,很乐意提供更多信息。提前感谢您的帮助!!