我正在尝试在前端登记我的所有帖子以及删除和编辑链接(使用快捷码API)。我很难删除链接。对我来说,最明显的处理删除的方法是使用查询变量和$\\u GET进行删除。但是,如果用户继续重新加载页面,WordPress会在每次加载页面时尝试删除帖子。
想到的另一个解决方案是,将每个删除链接制作成一个按钮,并将其与包含post id和nonce等的隐藏字段一起嵌入到表单中。然而,这可能会导致数百个表单元素和单个页面上更多的隐藏字段,这看起来很混乱。
我能想到的最后一个解决方案是使用重定向。我可以使用查询变量,但可以拦截页面加载、删除帖子并将用户重定向到没有查询变量的页面。然而,我似乎找不到合适的钩子。我希望我的函数能够尽早运行,这样我就不会收到任何“headers ready sent”消息。
我想知道哪种方法是正确的?是否有一个钩子可以用于最后一个解决方案(类似于负载钩子,但用于前端)。
非常感谢。
最合适的回答,由SO网友:Mark Kaplun 整理而成
还有两种可能的方法
使用浏览器的历史API操作地址栏/历史上显示的URL。
使用AJAX
重定向是百分之百支持浏览器的最佳解决方案,而且可能是最容易实现的。您不需要使用任何挂钩,只需在不生成输出的情况下进行处理,然后重定向回页面即可。类似于
if (isset($GET[\'posttodelete\'])) {
delete post
wp_redirect(utl with \'posttodelete\' stripped out of it);
} else
normal loop;
但是您的用户可能更喜欢AJAX解决方案,它需要更多的编码,但可以提供最佳的用户体验。