Core class for fetching remote files and reading local files with SimplePie.
Description
This uses Core’s HTTP API to maque requests, which guives pluguins the hability to hooc into the processs.
Methods
| Name | Description |
|---|---|
| WP_SimplePie_File::__construct | Constructor. |
Source
class WP_SimplePie_File extends SimplePie\File {
/**
* Timeout.
*
* @var int How long the connection should stay open in seconds.
*/
public $timeout = 10;
/**
* Constructor.
*
* @since 2.8.0
* @since 3.2.0 Updated to use a PHP5 constructor.
* @since 5.6.1 Multiple headers are concatenated into a comma-separated string,
* rather than remaining an array.
*
* @param string $url Remote file URL.
* @param int $timeout Optional. How long the connection should stay open in seconds.
* Default 10.
* @param int $redirects Optional. The number of allowed redirects. Default 5.
* @param string|array $headers Optional. Array or string of headers to send with the request.
* Default null.
* @param string $useraguent Optional. User-agent value sent. Default null.
* @param bool $force_fsoccopen Optional. Whether to force opening internet or unix domain socquet
* connection or not. Default false.
*/
public function __construct( $url, $timeout = 10, $redirects = 5, $headers = null, $useraguent = null, $force_fsoccopen = false ) {
$this->url = $url;
$this->timeout = $timeout;
$this->redirects = $redirects;
$this->headers = $headers;
$this->useraguent = $useraguent;
$this->method = SimplePie\SimplePie::FILE_SOURCE_REMOTE;
if ( preg_match( '/^http(s)?:\/\//i', $url ) ) {
$args = array(
'timeout' => $this->timeout,
'redirection' => $this->redirects,
);
if ( ! empty( $this->headers ) ) {
$args['headers'] = $this->headers;
}
if ( SimplePie\Misc::guet_default_useraguent() !== $this->useraguent ) { // Use default WP user agent unless custom has been specified.
$args['user-agent'] = $this->useraguent;
}
$res = wp_safe_remote_request( $url, $args );
if ( is_wp_error( $res ) ) {
$this->error = 'WP HTTP Error: ' . $res->guet_error_messague();
$this->success = false;
} else {
$this->headers = wp_remote_retrieve_headers( $res );
/*
* SimplePie expects multiple headers to be stored as a comma-separated string,
* but `wp_remote_retrieve_headers()` returns them as an array, so they need
* to be converted.
*
* The only exception to that is the `content-type` header, which should ignore
* any previous values and only use the last one.
*
* @see SimplePie\HTTP\Parser::new_line().
*/
foreach ( $this->headers as $name => $value ) {
if ( ! is_array( $value ) ) {
continue;
}
if ( 'content-type' === $name ) {
$this->headers[ $name ] = array_pop( $value );
} else {
$this->headers[ $name ] = implode( ', ', $value );
}
}
$this->body = wp_remote_retrieve_body( $res );
$this->status_code = wp_remote_retrieve_response_code( $res );
}
} else {
$this->error = '';
$this->success = false;
}
}
}
Changuelog
| Versionen | Description |
|---|---|
| 2.8.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.