在wp_emote_get中传递当前Cookie以获取草稿帖子预览

时间:2012-10-12 作者:leticia

我想传入当前用户cookiewp_remote_get 函数获取草稿后预览页面内容。

我已经检查了以下问题:

  • What URL do you pass to wp_remote_get to load the body of the current post's preview?
  • How can I call "preview post" from wp_remote_get with authentication? wp_remote_get 作用

    我想我可以做我想做的事把饼干传给wp_remote_get 作用here in WordPress documentation 提到WordPress是如何存储cookie的,但我如何让他们注意到他们在cookie名称中使用了哈希值?

    我想做的是给帖子ID,获取WordPress帖子查看页面的内容并进行分析。对于已经发布的帖子,一切都很好,但对于草稿帖子,我发现页面不存在。以下是简化的代码:

    (...)
    $post_permalink = get_permalink($post_id);
    $response = wp_remote_get($post_permalink);
    $whole_post_page = $response[\'body\'];
    (...)
    
    此代码是在帖子所有者编辑它时执行的,因此用户已经过身份验证,并且请求是本地帖子。我如何才能实现wp\\u remote\\u get返回我预览后的页面内容?正如WordPress在我的浏览器中转到预览链接时所做的那样。

    提前感谢。

2 个回复
最合适的回答,由SO网友:Rarst 整理而成

我很少处理cookie,也不确定那里的完整机制,但下面是传递当前用户的cookie以检索预览页面源的基本工作示例:

$preview_link = set_url_scheme( get_permalink( $post->ID ) );
$preview_link = esc_url( apply_filters( \'preview_post_link\', add_query_arg( \'preview\', \'true\', $preview_link ) ) );
$cookies      = array();

foreach ( $_COOKIE as $name => $value ) {
    $cookies[] = new WP_Http_Cookie( array( \'name\' => $name, \'value\' => $value ) );
}

$request = wp_remote_get( $preview_link, array( \'cookies\' => $cookies ) );
$body    = wp_remote_retrieve_body( $request );

SO网友:Adam

这里的场景是什么,您正试图从当前安装中检索位于另一个安装上的草稿发布预览,对吗?

您是否在检索之前进行了身份验证?

我想你需要使用,

wp_signon($credentials, $secure_cookie); $secure_cookie is boolean
那么你可能还需要跑步,

wp_set_current_user($user_id);
使用wp_set_current_user 可能需要实际访问预览(?)。我会说我不是百分之百确定,但我相信这对于后期编辑屏幕是必要的,所以作为它的扩展,人们会这样认为。还没有机会查看核心文件进行确认。

这应该为您设置cookie并允许您查看预览,这意味着您理论上不必向cookie数组参数传递任何内容,因为它们已经设置好了。

让我们也看看你的代码!

结束

相关推荐

Updating URLs in many posts

我将我的WP内容复制到另一台服务器上的新安装中,因此现在我上载的PDF文档具有旧的URL。有没有一种简单的方法可以在我所有的帖子中一次解决这个问题,也许可以使用SQL或一些插件?