'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( '' ).insertBefore( '#pause-resume' ); jQuery( '#pause-resume' ).hide(); jQuery( '#pause-resume-reveal-button' ).click( function( ev ) { ev.preventDefault(); jQuery( '#pause-resume' ).toggle(); return false; }); } ); updatedPosts->display(); ?>
automatic_update_hook( array( 'setting only' => true ) ); $update_time_limit = (int) get_option( 'feedwordpress_update_time_limit' ); // Hey, ho, let's go... ?> for_default_settings() ) : ?> for_default_settings()) : ?>
: 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( 'fetch timeout', FEEDWORDPRESS_FETCH_TIMEOUT_DEFAULT ) ); if ( $this->for_feed_settings() ) : $article = __( 'this' ); else : $article = __( 'a' ); endif; ?>

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', ) ); ?>
NULL, 'password' => NULL, 'method' => '-', ), ); // Equivalents if ( is_null( $params['method'] ) ) : $params['method'] = '-'; endif; $count++; /** var string Constructed slug for each feed credential. */ $slug = ( $count > 1 ? '-' . $count : '' ); global $feedwordpress; $authMethods = apply_filters( 'feedwordpress_http_auth_methods', $feedwordpress->httpauth->methods_available(), ); $linkRssAuthId = sanitize_html_class( 'link-rss-authentication' . $slug ); $linkRssCredentialsId = sanitize_html_class( 'link-rss-authentication-credentials' . $slug ); $linkRssAuthMethodId = sanitize_html_class( 'link-rss-authentication-method' . $slug ); if ( count( $authMethods ) > 1 ) : /* More than '-' */ ?> setting( 'query parameters', '' ) ); if ( ! is_array( $link_rss_params ) ) : $link_rss_params = array(); endif; if ( $page->for_feed_settings() ) : $info['name'] = esc_html( $page->link->link->link_name ); $info['description'] = esc_html( $page->link->link->link_description ); $info['url'] = esc_html( $page->link->link->link_url ); $rss_url = $page->link->link->link_rss; $hardcode['name'] = $page->link->hardcode( 'name' ); $hardcode['description'] = $page->link->hardcode( 'description' ); $hardcode['url'] = $page->link->hardcode( 'url' ); else : $cat_id = FeedWordPress::link_category_id(); $params = array(); $params['taxonomy'] = 'link_category'; $params['hide_empty'] = false; $results = get_categories( $params ); /** var bool Guarantee that the Contributors category will be in the drop-down chooser, even if it is empty. */ $found_link_category_id = false; foreach ( $results as $row ) : // Normalize case if ( ! isset( $row->cat_id ) ) : $row->cat_id = $row->cat_ID; endif; if ( $row->cat_id == $cat_id) : $found_link_category_id = true; endif; endforeach; if ( ! $found_link_category_id ) : $results[] = get_category( $cat_id ); endif; $info = array(); $rss_url = null; $hardcode['name'] = get_option( 'feedwordpress_hardcode_name' ); $hardcode['description'] = get_option( 'feedwordpress_hardcode_description' ); $hardcode['url'] = get_option( 'feedwordpress_hardcode_url' ); endif; /** @var bool Hide authentication (unused). */ $hideAuth = false; $username = $this->setting( 'http username', NULL ); if ( is_null( $username ) ) : $username = ''; $hideAuth = true; endif; $password = $this->setting( 'http password', NULL ); if ( is_null( $password ) ) : $password = ''; endif; $auth = $this->setting( 'http auth method', NULL ); if ( is_null( $auth ) or ( strlen( $auth ) == 0 ) ) : $auth = '-'; $hideAuth = true; endif; // Hey ho, let's go ?> for_feed_settings() ) : ?> __('Link Name'), "description" => __('Short Description'), "url" => __('Homepage'), ); foreach ( $rows as $what => $label ) : $hardcode_name = sanitize_html_class( sprintf( 'hardcode_%s', $what ) ); $hardcode_id = sanitize_html_class( sprintf( 'basics-hardcode-%s', $what ) ); $hardcode_view_id = sanitize_html_class( sprintf( 'basics-%s-view', $what ) ); $hardcode_edit_id = sanitize_html_class( sprintf( 'basics-%s-edit', $what ) ); ?>
(validate) display_authentication_credentials_box( array( 'username' => $username, 'password' => $password, 'method' => $auth, ) ); ?> $pair ) : ?>

admin_page_href('posts-page.php', array(), $page->link); ?>

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.

link->settings as $key => $value) : if ( !preg_match("\007^((".implode(')|(', $page->special_settings)."))$\007i", $key)) : ?>
Key Value Action
add new setting...
get_error_code()=='http_request_failed') : $data = $err->get_error_data('http_request_failed'); if (is_array($data) and isset($data['status'])) : if (401==$data['status']) : $ret = $data['uri']; endif; endif; endif; endif; return $ret; } function display_feedfinder () { $lookup = FeedWordPress::param( 'lookup' ); $auth = FeedWordPress::param( 'link_rss_auth_method' ); $username = FeedWordPress::param( 'link_rss_username' ); $password = FeedWordPress::param( 'link_rss_password' ); $credentials = array( "authentication" => $auth, "username" => $username, "password" => $password, ); $feeds = array(); $feedSwitch = false; $current = null; if ($this->for_feed_settings()) : // Existing feed? $feedSwitch = true; if (is_null($lookup)) : // Switch Feed without a specific feed yet suggested // Go to the human-readable homepage to look for // auto-detection links $lookup = $this->link->link->link_url; $auth = $this->link->setting('http auth method'); $username = $this->link->setting('http username'); $password = $this->link->setting('http password'); // Guarantee that you at least have the option to // stick with what works. $current = $this->link->link->link_rss; $feeds[] = $current; endif; $name = $this->link->link->link_name; else: // Or a new subscription to add? $name = "Subscribe to ".feedwordpress_display_url($lookup); endif; ?>

Feed Finder:

display_alt_feed_box($lookup); endif; $finder = array(); if ( !is_null($current)) : $finder[$current] = new FeedFinder($current); endif; $finder[$lookup] = new FeedFinder($lookup); foreach ($finder as $url => $ff) : $feeds = array_merge($feeds, $ff->find( /*url=*/ NULL, /*params=*/ $credentials)); endforeach; $feeds = array_values( // Renumber from 0..(N-1) $feeds ); // Allow for some simple FeedFinder results filtering $feeds = apply_filters( 'feedwordpress_feedfinder_results', $feeds, array( "url" => $lookup, "auth" => $auth, "username" => $username, "password" => $password, "finder" => $finder, ), $this ); if (count($feeds) > 0): if ($feedSwitch) : ?>

Feeds Found

1) : $option_template = 'Option %d: '; $form_class = 'multi'; ?>

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; ?>
action="form_action( 'syndication.php' ) ); ?>" method="post">
"> feed stamp_link_id(); // No feed specified = add new feed; we // need to pass along a starting title // and homepage URL for the new Link. if ( ! $this->for_feed_settings()): ?>
items) && is_array($rss->items) ): // Prepare to display Sample Item $link = new MagpieMockLink(array('simplepie' => $pie, 'magpie' => $rss), $f); $post = new SyndicatedPost(array('simplepie' => $rss->originals[0], 'magpie' => $rss->items[0]), $link); ?>

Sample Item

post['post_content'], 'post' ); ?>
'; print "

Problem:

\n"; print "

FeedWordPress encountered the following error when trying to retrieve this feed:

"; print '

' . esc_html( $rss->get_error_message() ) . '

'; print "

If you think this is a temporary problem, you can still force FeedWordPress to add the subscription. FeedWordPress will not be able to find any syndicated posts until this problem is resolved.

"; print "
"; endif; ?>

No Items

FeedWordPress found no posts on this feed.

Feed Information

  • Homepage: Unknown': esc_html( $feed_title ); ?>
  • Feed URL: (validate)
  • Encoding: encoding) ? esc_html($rss->encoding) : "Unknown"; ?>
  • Description: channel['description']) ? esc_html($rss->channel['description']) : "Unknown"; ?>
display_authentication_credentials_box(array( 'username' => $username, 'password' => $password, 'method' => $auth, )); ?> for_feed_settings()); ?>
$ff) : print '

Searched for feeds at '. esc_html( $url ) . '

' . "\n"; print '

' . esc_html__( 'Error' ) . ': ' . esc_html__( 'FeedWordPress couldn\'t find any feeds at' ).' ' . esc_html( $lookup ) . ''; print '. ' . esc_html__( 'Try another URL' ) . '.

'; // Diagnostics print "
\n"; print '

' . esc_html__( 'Diagnostic information' ) . '

' . "\n"; if ( !is_null($ff->error()) and strlen($ff->error()) > 0) : print '

'. esc_html__( 'HTTP request failure' ) . '

' . "\n"; print '

' . esc_html( $ff->error() ) ."

\n"; else : print '

' . esc_html__( 'HTTP request completed' ) . '

' . "\n"; 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 "

".__('HTTP Transports available').":

\n"; print "
    \n"; print "
  1. ".implode("
  2. \n
  3. ", array_map('get_class', $transports))."
  4. \n"; print "
\n"; else */ if ( is_callable( array( $httpObject, '_get_first_available_transport' ) ) ) : $transport = $httpObject->_get_first_available_transport( array(), $url ); print "

" . esc_html__("HTTP Transport") . ":

\n"; print "
    \n"; print "
  1. " . esc_html( MyPHP::val($transport) ) . "
  2. \n"; print "
\n"; endif; print "
\n"; endif; endforeach; endif; if ( ! $feedSwitch) : $this->display_alt_feed_box($lookup, /*alt=*/ true); endif; ?> $params); endif; $params = wp_parse_args($params, array( // Defaults "alt" => false, "err" => NULL, "auth" => NULL, "password" => NULL, "username" => NULL, )); $alt = $params['alt']; ?>
style="margin: 1.0em 3.0em; font-size: smaller;"> Alternative feedsFind feeds

Use a different feed

401 Not Authorized. This URL may require a username and password to access it. You may want to add login credentials below and check it again.

stamp_link_id('link_id'); ?>
display_authentication_credentials_box(array( 'username' => $params['username'], 'password' => $params['password'], 'method' => $params['auth'], )); ?>

This can be the address of a feed, or of a website. FeedWordPress will try to automatically detect any feeds associated with a website.

for_feed_settings()) : $params_key = FeedWordPress::post( 'link_rss_params_key', array() ); if ( is_array( $params_key ) && count($params_key) > 0 ) : $params_values = FeedWordPress::post( 'link_rss_params_value', array() ); $qp = array(); foreach ( $params_key as $index => $key ) : if (strlen($key) > 0) : if ( isset( $params_values[ $index ] ) ) : $params_value = $params_values[ $index ]; if ( strlen($params_value) > 0 ) : $qp[] = array( $key, $params_value ); endif; endif; endif; endforeach; $this->update_setting('query parameters', serialize($qp)); endif; // custom feed settings first $param_notes = FeedWordPress::post( 'notes', array() ); foreach ( $param_notes as $mn ) : $mn['key0'] = ( isset($mn['key0']) ? trim($mn['key0']) : null ); $mn['key1'] = trim($mn['key1']); if (preg_match("\007^((" .implode(')|(',$this->special_settings) ."))$\007i", $mn['key1'])) : $mn['key1'] = 'user/'.$mn['key1']; endif; if (strlen($mn['key0']) > 0) : unset($this->link->settings[$mn['key0']]); // out with the old endif; if (($mn['action']=='update') and (strlen($mn['key1']) > 0)) : $this->link->settings[$mn['key1']] = $mn['value']; // in with the new endif; endforeach; // now stuff through the web form // hardcoded feed info foreach (array('name', 'description', 'url') as $what) : // We have a checkbox for "No," so if it's unchecked, mark as "Yes." $this->link->settings["hardcode {$what}"] = FeedWordPress::post( "hardcode_{$what}", 'yes' ); if (FeedWordPress::affirmative($this->link->settings, "hardcode {$what}")) : $this->link->link->{'link_'.$what} = FeedWordPress::post( 'link' . $what ); endif; endforeach; // Update scheduling $update_schedule = FeedWordPress::post( 'update_schedule' ); if ( ! is_null( $update_schedule ) ) : $this->link->settings['update/hold'] = $update_schedule; endif; $use_default_update_window = FeedWordPress::post( 'use_default_update_window' ); $update_window = FeedWordPress::post( 'update_window' ); if ( FeedWordPress::affirmative( $use_default_update_window ) ) : unset($this->link->settings['update/window']); elseif ( ! is_null( $update_window ) ) : $update_window = intval( $update_window ); if ( $update_window > 0 ) : $this->link->settings['update/window'] = $update_window; endif; endif; else : // Global update_option('feedwordpress_cat_id', FeedWordPress::post( 'syndication_category' ) ); $automatic_updates = FeedWordPress::post( 'automatic_updates' ); if ( ! in_array( $automatic_updates, array( 'init', 'shutdown' ) ) ) : $automatic_updates = null; endif; update_option('feedwordpress_automatic_updates', $automatic_updates); $update_window = FeedWordPress::post( 'update_window' ); if ( ! is_null( $update_window ) ) : $update_window = intval( $update_window ); if ( $update_window > 0 ) : update_option( 'feedwordpress_update_window', $update_window ); endif; endif; $update_time_limit = FeedWordPress::post( 'update_time_limit' ); $time_limit_seconds = 0; if ( FeedWordPress::affirmative( $update_time_limit ) ) : $time_limit_seconds = intval( FeedWordPress::post( 'time_limit_seconds' ) ); endif; update_option( 'feedwordpress_update_time_limit', $time_limit_seconds ); foreach (array('name', 'description', 'url') as $what) : // We have a checkbox for "No," so if it's unchecked, mark as "Yes." $hardcode = FeedWordPress::post( "hardcode_{$what}", 'yes' ); update_option( "feedwordpress_hardcode_{$what}", $hardcode ); endforeach; endif; $update_pause = FeedWordPress::post( 'update_pause' ); if ( ! is_null( $update_pause ) ) : $this->update_setting( 'update/pause', $update_pause ); endif; $fetch_timeout = FeedWordPress::post( 'fetch_timeout' ); if ( ! is_null( $fetch_timeout ) ) : $fetch_timeout_default = FeedWordPress::post( 'fetch_timeout_default' ); if ( FeedWordPress::affirmative( $fetch_timeout_default ) ) : $fetch_timeout = null; endif; if ( is_int( $fetch_timeout ) ) : $fetch_timeout = intval( $fetch_timeout ); endif; $this->update_setting( 'fetch timeout', $fetch_timeout ); endif; $update_incremental = FeedWordPress::post( 'update_incremental' ); if ( ! is_null( $update_incremental ) ) : $this->update_setting( 'update_incremental', $update_incremental ); endif; $tombstones = FeedWordPress::post( 'tombstones' ); if ( ! is_null( $tombstones ) ) : $this->update_setting('tombstones', $tombstones ); endif; $update_minimum = FeedWordPress::post( 'update_minimum' ); if ( ! is_null( $update_minimum ) ) : $this->update_setting( 'update/minimum', $update_minimum ); endif; $link_rss_auth_method = FeedWordPress::post( 'link_rss_auth_method' ); if ( ! $link_rss_auth_method || '-' == $link_rss_auth_method ) : $link_rss_auth_method = null; endif; $this->update_setting( 'http auth method', $link_rss_auth_method ); $link_rss_username = FeedWordPress::post( 'link_rss_username' ); if ( ! $link_rss_username || is_null( $link_rss_auth_method ) ) : $link_rss_username = null; endif; $this->update_setting( 'http username', $link_rss_username ); $link_rss_password = FeedWordPress::post( 'link_rss_password' ); if ( strlen( $link_rss_password ) == 0 || is_null( $link_rss_auth_method ) ) : $link_rss_password = null; endif; $this->update_setting( 'http password', $link_rss_password ); $this->updatedPosts->accept_POST(); parent::save_settings(); } /* FeedWordPressFeedsPage::save_settings() */ } /* class FeedWordPressFeedsPage */ $feedsPage = new FeedWordPressFeedsPage; $feedsPage->display();