在wp_remote_get中传递当前的cookie以获取草稿发布预览


9

我想在wp_remote_get函数中传递当前用户cookie,以获取草稿发布预览页面内容。

我已经检查了以下问题:

但是在它们两个中都出现了如何使cookie传递给wp_remote_get函数。

我假设我可以做我想将cookie传递给wp_remote_get函数的操作,在WordPress文档中这里提到了WordPress如何存储cookie,但是如何确保它们在cookie名称中使用哈希值呢?

我要执行的操作是给一个Post ID,以获取WordPress Post视图页面的内容并对其进行分析。对于已经发布的帖子,一切正常,但是对于草稿帖子,我知道该页面不存在。这是简化的代码:

(...)
$post_permalink = get_permalink($post_id);
$response = wp_remote_get($post_permalink);
$whole_post_page = $response['body'];
(...)

该代码在帖子的所有者对其进行编辑时执行,因此用户已经通过身份验证,并且该请求是针对本地帖子的。如何完成wp_remote_get返回“预览预览”页面的内容?就像WordPress在浏览器中转到预览链接时一样。

先谢谢了。

Answers:


7

我很少处理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 );

0

这是什么情况,您正在尝试从当前安装中的另一个安装中检索草稿预览,对吗?

您是否在检索之前验证自己的身份?

我认为您需要使用,

wp_signon($credentials, $secure_cookie); $secure_cookie is boolean

然后,您可能还需要运行,

wp_set_current_user($user_id);

随着wp_set_current_user可能被需要实际访问预览(?)。我要说的是我不是100%肯定,但是我相信它对于后期编辑屏幕是必需的,因此,作为其扩展,可以这样假设。尚未有机会查看核心文件以进行确认。

那应该为您设置cookie并允许您查看预览,这意味着从理论上讲您不必将任何东西传递到cookie数组参数中,因为它们已经设置好了。

让我们也看看您的代码!


谢谢,我用您询问我的信息来更新问题。
leticia 2012年

引用的功能对我没有帮助,因为该用户已经登录,并且我想使用其Cookie来获取草稿预览。
leticia 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.