在添加自定义帖子时收到“您关注的链接已过期”

时间:2018-04-28 作者:GeeC

编辑:我已经完全重写了这个问题,因为它已被关闭为离题。在我看来,它有两个非常相关的要点,可以帮助其他开发人员,但在其原始形式中,这些要点并不太清楚。因此,我删去了所有我现在知道与解决方案无关的背景信息。我还编辑了我的答案,使其完整(之前,部分答案是在问题的更新中)。

我正在开发一个插件,创建一个自定义帖子类型(CPT)。我的CPT使用一个元数据框来定制元数据。我在显示元框的函数中创建一个nonce。保存自定义元数据并检查nonce的函数(通过check_admin_referer) 由调用save_post 钩当我尝试添加我的CPT帖子时,每当我单击“添加新”时,我都会看到“你关注的链接已过期”。

1 个回复
SO网友:GeeC

“您关注的链接已过期”消息位于wp includes/functions第2607行的函数wp\\u nonce\\ays中。php。显然,消息已从“你确定要这样做吗?”在4.9.5中。如果nonce检查失败,check\\u admin\\u referer将调用wp\\u nonce\\ays函数。这是Wordpress代码中使用此消息的唯一位置。因此,如果您看到此消息,您就知道nonce检查在代码中的某个地方失败了。

保存自定义元数据时,请使用post\\u updated挂钩,而不是save\\u post挂钩。出于某种原因,在显示创建帖子页面时(即在保存任何内容之前),会调用save\\u post挂钩。此时尚未创建nonce,因此nonce检查失败。

结束

相关推荐

REST API中的wp_create_nonce()使User->ID为零

我有麻烦wp_create_nonce() 和wp_verify_nonce().我的问题的根源在于创建nonce的方式和生成nonce的位置。查看代码wp_create_nonce() 和wp_verify_nonce(), 我看到nonce是由多个因素创建的哈希值,包括$uid, 这是一个user id of current user. $user = wp_get_current_user(); $uid = (int) $user->ID; if ( ! $uid )