自动生成删除帖子链接并将其提供给帖子创建者

时间:2019-12-10 作者:Cracmeister

我的网站显示未登录用户创建的帖子。他们使用插件Contact Form 7提交自定义帖子类型,并发布我的Contact Form 7。但这些帖子有点像要约,所以可能会过期。因此,我需要后删除链接。由于用户没有登录,我需要在用户提交帖子后立即提供删除链接。

我想用get_delete_post_link(), 但我不知道如何获得正确帖子的正确链接以及在哪里实现这一点。可能使用事件侦听器?我太迷路了。。

1 个回复
SO网友:Tom J Nowell

我曾想过使用get\\u delete\\u post\\u link(),但我不知道如何获得指向正确帖子的正确链接,也不知道在哪里实现。可能使用事件侦听器?我太迷路了。。

传递post ID或确保您在post循环中都可以工作,但由于您提到这是针对已注销的用户的,因此此功能无法启动,因为它会将用户发送到WP Admin。

因此,您有两种选择:

强制用户登录,并将该用户设置为作者在帖子数据中保存唯一标识符,然后将其与帖子ID和nonce一起传递回去。然后,您可以发出包含所有3项的请求,以验证删除帖子的确实是作者Warning: 如果没有某种形式的验证,任何人都可以通过运行每个可能的帖子ID来删除你网站上的任何内容。这很简单。

如何实现该请求可以采用两种形式:

将用户发送到同一页面,并将URL参数与帖子ID和验证值放在一起。然后在functions.php 查找这些值,验证用户是否可以这样做,通过wp_delete_post, 然后在JS中向前重定向,当用户单击删除链接/按钮时,发出经过身份验证的REST API请求来删除帖子,并传递帖子ID和任何需要的信息。如果成功,请重定向用户。如果未成功,则显示消息。如果用户已登录,则可以跳过验证数据部分。如果您坚持要注销用户,那么您将需要选项2的自定义REST API端点。

联系表格7这是更困难的部分,如何将验证密钥保存到CF7创建的帖子中,或将其传递到CF7给出的响应中,这是本网站无法涵盖的。对于这一部分,您需要联系CF7支持渠道,包括官方支持、社区、聚会小组、FB小组等

相关推荐