使用wp_emote_get时传递Cookie

时间:2019-06-02 作者:Matthew Brown aka Lord Matt

我正在开发一个插件,它使用wp_remote_get. 问题是Tumblr需要一个cookie来符合GDPR。这包括RSS提要。这意味着所有Tumblr提要当前都已中断。

我发现an example of using CURL to acquire the cookies 因此,饲料将加载。然而,我只对wp_remote_get 以及相关功能。

如何通过WordPress的远程获取方法实现示例中的cookie获取黑客?

Edit: 为了澄清这一点,我需要获取饼干,然后使用饼干。这是两个要求;一个用于cookie,另一个用于cookie。

2 个回复
SO网友:phatskat

的参数数组wp_remote_get 接受cookies 参数:

$cookies = [];
$cookie = new WP_Http_Cookie( \'cookie_name\' );
$cookie->name = \'cookie_name\';
$cookie->value = \'your cookie value\';
$cookie->expires = 7 * DAY_IN_SECONDS; // expires in 7 days
$cookie->path = \'/\';
$cookie->domain = \'.reddit.com\';
$cookies[] = $cookie;

$url = \'https://tumblr.com/some/url/\';

$args = [
    \'cookies\' => $cookies,
];

$response = wp_remote_get( $url, $args );

SO网友:sMyles

离开@phatskat answer,您还可以在构造函数中传递值,WooCommerce的示例如下:

$cookies = [];
$cookies[] = new WP_Http_Cookie( array(
    \'name\'  => $name,
    \'value\' => $value,
));


$args = [
    \'cookies\' => $cookies,
];

$response = wp_remote_get( $url, $args );
但从核心代码来看,有一种方法可以在发出请求时构建cookie(@自2.8.0起):https://github.com/WordPress/WordPress/blob/f547eb617441853b6e316c6f127a2182c12925e3/wp-includes/class-http.php#L775-L797

当发出CURL或STREAM请求时:https://github.com/WordPress/WordPress/blob/57a3f803ae67814b2639ab8816d59c5fa5add441/wp-includes/class-wp-http-curl.php#L93

相关推荐

Cookies in template

我需要根据cookies只显示一次页面的某些部分。主要问题是我只能在插件中设置cookie,挂起init操作。我已经读了20页的谷歌,这个网站,问了2个论坛,但我仍然有这个问题。任何帮助都将不胜感激!