我正在使用第三方插件来允许从网站的前端创建帖子。基本上我想要用户可以创建帖子的功能,我可以在管理员后端批准帖子与否。然而,tt有一个AJAX上传器,允许你上传特色图片,但这仅在你登录时有效。我看到ajax调用通过wp-admin / admin-ajax.php和行:
do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] );
我无法看到这是如何限制上传或我如何通过此AJAX调用启用上传。
任何帮助表示赞赏。 感谢
答案 0 :(得分:3)
使用wordpress,Ajax的工作方式略有不同。您可以将其发送到" /wp-admin/admin-ajax.php"而不是通过ajax将信息发送到网址以获取函数。它会触发wp_ajax挂钩,或者在前端的情况下,触发wp_ajax_nopriv。
当此文件接收到信息时,它将匹配ajax函数中的action:变量,以及在前端的情况下添加到wp_ajax_nopriv_钩子的操作或在后端的情况下添加到wp_ajax的操作。
要清楚这只是服务器端代码。您将需要jQuery来触发操作(例如按下按钮),然后将信息发送到操作并检索输出。 e.g
jQuery('#image').click(function() { // fires when some element with id #image is click on
jQuery.ajax({
type: "POST",
url: "/wp-admin/admin-ajax.php",
data: {
action: 'sample_ajax_function',
reg: regnum, // any other data you want to send?
maketaxonomy: '<?php echo $maketaxonomy;?>'
},
success: function (output) { // if data is returned from your function you can pick it up using output now.
console.log(output); //log it to your console so you can see what is returned.
},
});
});
然后在你的函数文件中。
add_action('wp_ajax_nopriv_sample_ajax_function', 'my_ajax_function');
function my_ajax_function() {
$reg= $_POST['reg'];
echo $reg; //output something.
exit; // no more output
}
如果您正在寻找可用于上传图片的方法,请查看Html multiple file input - javascript access and delete files。