'Continue', 101 => 'Switching Protocols', 102 => 'Processing', // WebDAV; RFC 2518 103 => 'Early Hints', // RFC 8297 110 => 'Response is Stale', // Obsoleted in 2022 by RFC 9111 (caching-related) 111 => 'Revalidation Failed', // Obsoleted in 2022 by RFC 9111 (caching-related) 112 => 'Disconnected Operation', // Obsoleted in 2022 by RFC 9111 (caching-related) 113 => 'Heuristic Expiration', // Obsoleted in 2022 by RFC 9111 (caching-related) 199 => 'Miscellaneous Warning', // Obsoleted in 2022 by RFC 9111 (caching-related) 200 => 'OK. FeedWordPress had no problems retrieving the content at this URL but the content does not seem to be a feed, and does not seem to include links to any feeds.', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 207 => 'Multi-Status', // WebDAV; RFC 4918 208 => 'Already Reported', // WebDAV; RFC 5842 214 => 'Transformation Applied', // Obsoleted in 2022 by RFC 9111 (caching-related) 218 => 'This is fine', // Non-standard; used by the Apache HTTP Serve) 226 => 'IM Used', // RFC 3229 299 => 'Miscellaneous Persistent Warning', // Obsoleted in 2022 by RFC 9111 (caching-related) 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', // Previously known as 'Moved temporarily' 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 306 => 'Switch Proxy', 307 => 'Temporary Redirect', 308 => 'Permanent Redirect', 400 => 'Bad Request', 401 => 'Unauthorized. This URL probably needs a username and password for you to access it.', 402 => 'Payment Required', 403 => 'Forbidden. The URL is not made available for the machine that FeedWordPress is running on.', 404 => 'Not Found. There is nothing at this URL. Have you checked the address for typos?', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Timeout', 409 => 'Conflict', 410 => 'Gone. This URL is no longer available on this server and no forwarding address is known.', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Payload Too Large', // Previously known as 'Request Entity Too Large' 414 => 'URI Too Long', // Previously known as 'Request URI Too Long' 415 => 'Unsupported Media Type', 416 => 'Range Not Satisfiable', // Previously known as 'Requested Range Not Satisfiable' 417 => 'Expectation Failed', 418 => 'I\'m a teapot', // RFC 2324, RFC 7168 419 => 'Page Expired', // Non-standard; used by the Laravel Framework 420 => 'Enhance Your Calm', // Non-standard; used by version 1.0 of the Twitter API 421 => 'Misdirected Request', 422 => 'Unprocessable Entity', 423 => 'Locked', // WebDAV; RFC 4918 424 => 'Failed Dependency', // WebDAV; RFC 4918 425 => 'Too Early', // RFC 8470 426 => 'Upgrade Required', 428 => 'Precondition Required', // RFC 6585 429 => 'Too Many Requests', // RFC 6585 431 => 'Request Header Fields Too Large', // RFC 6585 440 => 'Login Time-out', // Non-standard; used by Microsoft on IIS 444 => 'No Response', // Non-standard; used internally by the nginx web server 449 => 'Retry With', // Non-standard; used by Microsoft on IIS 450 => 'Blocked by Windows Parental Controls', // Non-standard; used by Microsoft 451 => 'Unavailable For Legal Reasons', // RFC 7725; also: used by Microsoft IIS for a redirect 460 => 'Too Soon', // Non-standard; used by Amazon on AWS 463 => 'Too Many IP Addresses', // Non-standard; used by Amazon on AWS 464 => 'Incompatible Protocol Version', // Non-standard; used by Amazon on AWS 494 => 'Request Header Too Large', // Non-standard; used by the nginx web server 495 => 'SSL Certificate Error', // Non-standard; used by the nginx web server 496 => 'SSL Certificate Required', // Non-standard; used by the nginx web server 498 => 'Invalid Token', // Non-standard; used by Esri on their ArcGIS for Server product 499 => 'Token Required', // Non-standard; used by Esri on their ArcGIS for Server product; also used as 'Client Closed Request' by the nginx web server 500 => 'Internal Server Error. Something unexpected went wrong with the configuration of the server that hosts this URL. You might try again later to see if this issue has been resolved.', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable. The server is currently unable to handle the request due to a temporary overloading or maintenance of the server that hosts this URL. This is probably a temporary condition and you should try again later to see if the issue has been resolved.', 504 => 'Gateway Timeout', 505 => 'HTTP Version Not Supported', 506 => 'Variant Also Negotiates', // RFC 2295 507 => 'Insufficient Storage', // WebDAV; RFC 4918 508 => 'Loop Detected', // WebDAV; RFC 5842 509 => 'Bandwidth Limit Exceeded', // Non-standard; used by the Apache Web Server as well as cPanel 510 => 'Not Extended', // RFC 2774 511 => 'Network Authentication Required', // RFC 6585 520 => 'Web Server Returned an Unknown Error', // Non-Standard; used by Cloudflare 521 => 'Web Server Is Down', // Non-Standard; used by Cloudflare 522 => 'Connection Timed Out', // Non-Standard; used by Cloudflare 523 => 'Origin Is Unreachable', // Non-Standard; used by Cloudflare 524 => 'A Timeout Occurred', // Non-Standard; used by Cloudflare 525 => 'SSL Handshake Failed', // Non-Standard; used by Cloudflare 526 => 'Invalid SSL Certificate', // Non-Standard; used by Cloudflare 527 => 'Railgun Error', // Non-Standard; used by Cloudflare 529 => 'Site is overloaded', // Non-standard; used by Qualys on its SSLLabs server testing API 530 => 'Site is frozen', // Non-standard; used by the Pantheon Systems web platform 561 => 'Unauthorized', // Non-standard; used by Amazon on AWS 598 => 'Network Read Timeout Error', // Non-standard; informal convention used by some HTTP procoes 599 => 'Network Connect Timeout Error', // Non-standard; informal convention used by some HTTP procoes ); /** * List of updated posts. * * @var mixed */ var $updatedPosts = NULL; /** * List of special settings. * * Regular expression syntax is OK here. * * @var Array */ var $special_settings = array( 'cats', 'cat_split', 'fetch timeout', 'freeze updates', 'hardcode name', 'hardcode url', 'hardcode description', 'hardcode categories', /* Deprecated */ 'comment status', 'terms', 'map authors', 'munge permalink', 'ping status', 'post status', 'postmeta', 'query parameters', 'resolve relative', 'syndicated post type', 'tags', 'unfamiliar author', 'unfamliar categories', /* Deprecated */ 'unfamiliar category', 'unfamiliar post_tag', 'add/.*', 'update/.*', 'feed/.*', 'link/.*', 'match/.*', ); /** * Constructs the Feeds page object * * @param mixed $link An object of class {@link SyndicatedLink} if created for one feed's settings, NULL if created for global default settings * @uses UpdatedPostsControl */ public function __construct( $link = -1 ) { if ( is_numeric( $link ) and -1 == $link ) : $link = $this->submitted_link(); endif; parent::__construct( 'feedwordpressfeeds', $link ); $this->dispatch = 'feedwordpress_admin_page_feeds'; $this->pagenames = array( 'default' => 'Feeds', 'settings-update' => 'Syndicated feed', 'open-sheet' => 'Feed and Update', ); $this->filename = __FILE__; $this->updatedPosts = new UpdatedPostsControl( $this ); $this->special_settings = apply_filters( 'syndicated_feed_special_settings', $this->special_settings, $this ); } /* FeedWordPressFeedsPage constructor */ /** * Prints out the feeds page. * * @return bool TRUE to continue printing out, FALSE to stop. * @uses FeedWordPress::param() */ function display() { global $post_source; $this->boxes_by_methods = array( 'feed_information_box' => __( 'Feed Information' ), 'global_feeds_box' => __( 'Update Scheduling' ), 'updated_posts_box' => __( 'Updated Posts' ), 'custom_settings_box' => __( 'Custom Feed Settings (for use in templates)' ), 'advanced_settings_box' => __( 'Advanced Settings' ), ); if ($this->for_default_settings()) : unset( $this->boxes_by_methods['custom_settings_box'] ); endif; // Allow overriding of normal source for FeedFinder, which may // be called from multiple points. if ( isset( $post_source ) and ! is_null( $post_source ) ) : $source = $post_source; else : $source = $this->dispatch; endif; $feedfinder = FeedWordPress::param( 'feedfinder' ); $action = FeedWordPress::param( 'action' ); if ( $feedfinder || in_array( $action, array( 'feedfinder', FWP_SYNDICATE_NEW ) ) ) : // If this is a POST, validate source and user credentials FeedWordPressCompatibility::validate_http_request(/*action=*/ $source, /*capability=*/ 'manage_links'); return $this->display_feedfinder(); // re-route to Feed Finder page endif; parent::display(); return false; // Don't continue } /* FeedWordPressFeedsPage::display() */ /** * Interface with JavaScript calls. * */ function ajax_interface_js() { parent::ajax_interface_js(); ?> jQuery( document ).ready( function () { contextual_appearance( 'automatic-updates-selector', 'cron-job-explanation', null, 'no' ); contextual_appearance( 'time-limit', 'time-limit-box', null, 'yes' ); contextual_appearance( 'use-default-update-window-no', 'update-scheduling-note', null, null, 'block', true ); jQuery( '#use-default-update-window-yes, #use-default-update-window-no' ).click( function () { contextual_appearance( 'use-default-update-window-no', 'update-scheduling-note', null, null, 'block', true ); } ); var els = [ 'name', 'description', 'url' ]; for ( var i = 0; i < els.length; i++ ) { contextual_appearance( /*item=*/ 'basics-hardcode-' + els[i], /*appear=*/ 'basics-' + els[i] + '-view', /*disappear=*/ 'basics-' + els[i] + '-edit', /*value=*/ 'no', /*visibleStyle=*/ 'block', /*checkbox=*/ true ); } /* for */ // Let's make the interface for the PAUSE/RESUME a bit better jQuery( '
|
|
| : | link->settings['update/last'] ) ) : echo esc_html( fwp_time_elapsed( $page->link->settings['update/last'] ) . " " ); else : esc_html_e( " none yet" ); endif; ?> |
| : | link->settings['update/hold'] ) ? $page->link->settings['update/hold'] : 'scheduled' ); ?> |
| setting_radio_control( 'update/pause', 'update_pause', /*options=*/ array( 'no' => __( 'UPDATE: import new posts as normal' ), 'yes' => __( 'PAUSE: do not import new posts until I unpause updates' ), ), /*params=*/ array( 'setting-default' => NULL, 'global-setting-default' => 'no', 'default-input-value' => 'default', ), ); ?> | |
| setting_radio_control( 'update/window', 'update_window', array( $this, 'update_window_edit_box' ), array( 'global-setting-default' => DEFAULT_UPDATE_PERIOD, 'default-input-name' => 'use_default_update_window', 'default-input-id' => 'use-default-update-window-yes', 'default-input-id-no' => 'use-default-update-window-no', 'labels' => array($this, 'update_window_currently' ), ) ); ?> | |
longer than FeedWordPress’s normal scheduling, FeedWordPress will always respect their request to slow down. But what should it do if the update interval is shorter than the schedule set above?' ); ?> setting_radio_control( 'update/minimum', 'update_minimum', /*options=*/ array( 'no' => __( 'Speed up and accept the interval from the feed provider' ), 'yes' => __( 'Keep pace and use the longer scheduling from FeedWordPress' ), ), /*params=*/ array( 'setting-default' => NULL, 'global-setting-default' => 'no', 'default-input-value' => 'default', ) ); ?> |
|
| : |
style="color: white; background-color: #703030; padding: 1.0em;">Recommendation. Unless you are positive that you have the webmaster’s permission, you generally should not set FeedWordPress to poll feeds more frequently than once every 60 minutes. Many webmasters consider more frequent automated polling to be abusive, and may complain to your web host, or ban your IP address, as retaliation for hammering their servers too hard.' ); ?>
Note. This is a default setting that FeedWordPress uses to schedule updates when the feed does not provide any scheduling requests. If this feed does provide update scheduling information (through elements such as <rss:ttl> or <sy:updateFrequency>), FeedWordPress will respect the feed’s request.' ); ?>
| setting_radio_control( 'fetch timeout', 'fetch_timeout', array($this, 'fetch_timeout_setting'), array( 'global-setting-default' => FEEDWORDPRESS_FETCH_TIMEOUT_DEFAULT, 'input-name' => 'fetch_timeout', 'default-input-name' => 'fetch_timeout_default', 'labels' => array($this, 'fetch_timeout_setting_value'), ) ); ?> | |
| setting_radio_control( 'update_incremental', 'update_incremental', /*options=*/ array( 'incremental' => __( '**Incremental.** When items no longer appear on the feed, keep them in the WordPress posts table.' ), 'complete' => __( '**Complete.** When items no longer appear on the feed, they are obsolete; retire them from the WordPress posts table.' ), ), /*params=*/ array( 'setting-default' => NULL, 'global-setting-default' => 'incremental', 'default-input-value' => 'default', ) ); ?> | |
| setting_radio_control( 'tombstones', 'tombstones', /*options=*/ array( 'yes' => __( 'Yes. If a feed indicates that one of its posts has been deleted, delete the local copy syndicated to this website.' ), 'no' => __( 'No. Even if a feed indicates that one of its posts has been deleted, retain the local copy on this website.' ), ), /*params=*/ array( 'setting-default' => NULL, 'global-setting-default' => 'yes', 'default-input-value' => 'default', ) ); ?> |
|
(validate)
display_authentication_credentials_box( array(
'username' => $username,
'password' => $password,
'method' => $auth,
)
);
?>
|
|||
|
|
|||
These custom settings are special fields for the feed you are
syndicating, to be retrieved in templates using the get_feed_meta() function. They do not create
custom fields on syndicated posts. If you want to create custom fields that are applied to each
individual post from this feed, set up the settings in Syndicated Posts.
| Key | Value | Action |
|---|---|---|
| add new setting... |
This web page provides at least different feeds. These feeds may provide the same information in different formats, or may track different items. (You can check the Feed Information and the Sample Item for each feed to get an idea of what the feed provides.) Please select the feed that you'd like to subscribe to.
$f): $ofc = $fwp_credentials; $fwp_credentials = $credentials; // Set $pie = FeedWordPress::fetch($f, array("cache" => false)); $fwp_credentials = $ofc; // Re-Set $rss = (is_wp_error($pie) ? $pie : new MagpieFromSimplePie($pie)); if ($this->url_for_401($pie)) : $this->display_alt_feed_box($lookup, array( "err" => $pie, "auth" => $auth, "username" => $username, "password" => $password )); continue; endif; if ($rss and !is_wp_error($rss)): $feed_link = (isset($rss->channel['link'])?$rss->channel['link']:''); $feed_title = (isset($rss->channel['title'])?$rss->channel['title']:$feed_link); $feed_type = ($rss->feed_type ? $rss->feed_type : 'Unknown'); $feed_version_template = '%.1f'; $feed_version = $rss->feed_version; else : // Give us some sucky defaults $feed_title = feedwordpress_display_url($lookup); $feed_link = $lookup; $feed_type = 'Unknown'; $feed_version_template = ''; $feed_version = ''; endif; ?>' . esc_html__( 'Error' ) . ': ' . esc_html__( 'FeedWordPress couldn\'t find any feeds at' ).' ' . esc_html( $lookup ) . '';
print '. ' . esc_html__( 'Try another URL' ) . '.
' . esc_html( $ff->error() ) ."
\n"; else : print 'Status ' . esc_html( $ff->status() ) . ': '. esc_html( $this->HTTPStatusMessages[ (int) $ff->status() ] ) ."
\n"; endif; // Do some more diagnostics if the API for it is available. // Note to @radgeek: consider using a hook instead: https://developer.wordpress.org/reference/hooks/http_api_transports/ (gwyneth 20230920) if ( function_exists( '_wp_http_get_object' ) ) : $httpObject = _wp_http_get_object(); /* // _getTransport() was totally deprecated (gwyneth 20230920) if (is_callable(array($httpObject, '_getTransport'))) : $transports = $httpObject->_getTransport(); print "