我正在写一个简单的新闻稿订阅插件。我用表单创建了一个小部件:
echo \'<form action="\'.home_url().\'" method="post" name="subscriber_form">\';
echo \'<p><input type="email" name="subscriber_mail" value="" placeholder="\'.__(\'Enter your email\',\'my-text-domain\').\'" required /></p>\';
echo \'<input type="submit" name="subscriber_send" value="\'.__(\'Subscribe\',\'my-text-domain\').\'" class="Buttons">\';
echo \'</form>\';
我可以直接将操作指定给文件来处理表单,但我需要加载wordpress。
是否有一个钩子(如ajax)可以将表单指向,或者是否有一种方法可以在插件中正确启动wordpress实例?
感谢您的反馈。
最合适的回答,由SO网友:Stephen Harris 整理而成
admin_url( \'admin-post.php\' )
是的非ajax版本admin_url( \'admin-ajax.php\' )
类似admin-ajax.php
它将触发四个挂钩中的一个:
Logged out users
admin_post_nopriv_{action}
($_REQUEST[\'action\']
指定)admin_post_nopriv
(no $_REQUEST[\'action\']
指定)
Logged in user admin_post_{action}
($_REQUEST[\'action\']
指定)admin_post
(no $_REQUEST[\'action\']
指定)
因此,可以将“操作”指定为目标url的一部分(例如。
admin_url( \'admin-ajax.php?action=my-action\' )
) 或与所有其他数据一起发布。
这样做的缺点是,如果需要将用户返回表单(例如由于错误),则需要重定向用户,因此浏览器会丢失用户输入的数据。这是糟糕的用户体验,所以我很少使用它。