即使只按一个“预览”按钮,也可能以两条不同的“路线”结束。
这个有点像
http://example.com/postname/?preview=true
第二种是:
http://example.com/postname/?preview_id=152&preview_nonce=xxx&preview=true
所以第一个包含
preview
查询参数,第二个包含
preview_id
preview_nonce
preview
查询参数。
preview
查询参数告诉WordPress允许向具有适当功能的用户显示未发布的帖子。
如果您有一篇文章保存为“草稿”,并且您已登录,您可以在前端查看它,就像它已发布一样,只需添加?preview=true
到帖子url。
第二种url是在post autosave运行时通过javascript附加到预览按钮的。
自动保存在posts表中按原样存储帖子(包括任何更改),但将实际帖子类型替换为“修订”类型。
查找更多信息here.
Autosave在后端定期运行,但在您单击“预览”按钮时也会运行,这样在预览屏幕中您总是可以看到最后的更改。
事情就是这样:
单击“预览”按钮,WordPress将当前帖子作为修订版存储在posts表中,该浏览器页面包含帖子url和preview_id
, preview_nonce
和preview
查询参数已打开,WordPress从posts表中提取post对象,原因是preview
查询参数存在,WordPress验证当前用户是否已登录并具有适当的功能。如果以前的检查通过,WordPress将从数据库中提取最后一次发布修订,确保修订发布名称和发布作者与在点提取的发布对象的发布名称和发布作者相匹配4
如果找到有效的修订,则会在点处拖动post对象4
将替换为修订后对象。除此之外,预览的处理方式与处理单个帖子的常规前端请求相同,但一旦用于显示页面的帖子对象从修订数据库行中取出,您就会看到最后一次(甚至未保存)帖子更改。