'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', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 307 => 'Temporary 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 => 'Request Entity Too Large', 414 => 'Request URI Too Long', 415 => 'Unsupported Media Type', 416 => 'Requested Range Not Satisfiable', 417 => 'Expectation Failed', 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', ); /** * 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 */ function FeedWordPressFeedsPage ($link = -1) { if (is_numeric($link) and -1 == $link) : $link = FeedWordPressAdminPage::submitted_link(); endif; FeedWordPressAdminPage::FeedWordPressAdminPage('feedwordpressfeeds', $link); $this->dispatch = get_class($this); $this->filename = __FILE__; } /* FeedWordPressFeedsPage constructor */ var $special_settings = array ( /* Regular expression syntax is OK here */ 'cats', 'cat_split', 'hardcode name', 'hardcode url', 'hardcode description', 'hardcode categories', /* Deprecated */ 'post status', 'comment status', 'ping status', 'unfamiliar author', 'unfamliar categories', /* Deprecated */ 'unfamiliar category', 'map authors', 'tags', 'postmeta', 'update/.*', 'feed/.*', 'link/.*', ); function display () { global $wpdb; global $fwp_post; global $post_source; if (FeedWordPress::needs_upgrade()) : fwp_upgrade_page(); return; 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 = get_class($this); endif; // If this is a POST, validate source and user credentials FeedWordPressCompatibility::validate_http_request(/*action=*/ $source, /*capability=*/ 'manage_links'); if (isset($_REQUEST['feedfinder']) or (isset($_REQUEST['action']) and $_REQUEST['action']=='feedfinder') or (isset($_REQUEST['action']) and $_REQUEST['action']==FWP_SYNDICATE_NEW)) : return $this->display_feedfinder(); // re-route to Feed Finder page else : if (strtoupper($_SERVER['REQUEST_METHOD'])=='POST') : $this->accept_POST($fwp_post); do_action('feedwordpress_admin_page_feeds_save', $GLOBALS['fwp_post'], $this); endif; //////////////////////////////////////////////// // Prepare settings page /////////////////////// //////////////////////////////////////////////// $this->ajax_interface_js(); $this->display_update_notice_if_updated('Syndicated feed'); $this->open_sheet('Feed and Update'); ?>
__('Feed Information'), 'global_feeds_box' => __('Update Scheduling'), 'posts_box' => __('Syndicated Posts, Links, Comments & Pings'), 'authors_box' => __('Syndicated Authors'), 'categories_box' => __('Categories'.FEEDWORDPRESS_AND_TAGS), 'custom_settings_box' => __('Custom Feed Settings (for use in templates)'), ); if ($this->for_default_settings()) : unset($boxes_by_methods['custom_settings_box']); endif; foreach ($boxes_by_methods as $method => $row) : if (is_array($row)) : $id = $row['id']; $title = $row['title']; else : $id = 'feedwordpress_'.$method; $title = $row; endif; fwp_add_meta_box( /*id=*/ $id, /*title=*/ $title, /*callback=*/ array(get_class($this), $method), /*page=*/ $this->meta_box_context(), /*context=*/ $this->meta_box_context() ); endforeach; do_action('feedwordpress_admin_page_feeds_meta_boxes', $this); ?>
meta_box_context(), $this->meta_box_context(), $this); ?>
close_sheet(); ?> for_default_settings()) : $automatic_updates = get_option('feedwordpress_automatic_updates'); $update_time_limit = (int) get_option('feedwordpress_update_time_limit'); ?> link->settings['update/window'])); $updateWindow = (isset($page->link->settings['update/window']) ? $page->link->settings['update/window'] : null); if (!is_numeric($updateWindow)) : $updateWindow = 60; else : $updateWindow = (int) $updateWindow; endif; ?>
Updates:

If you want to use a cron job, you can perform scheduled updates by sending regularly-scheduled requests to ?update_feedwordpress=1 For example, inserting the following line in your crontab:

*/10 * * * * /usr/bin/curl --silent ?update_feedwordpress=1

will check in every 10 minutes and check for updates on any feeds that are ready to be polled for updates.

How long should FeedWordPress wait between updates before it considers a feed ready to be polled for updates again?

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 a feed does provide update scheduling information (through elements such as <rss:ttl> or <sy:updateFrequency>), FeedWordPress will respect the feed's request.

:
: link->settings['update/last'])) : echo fwp_time_elapsed($page->link->settings['update/last'])." "; else : echo " none yet"; endif; ?>
: link->settings['update/hold']) ? $page->link->settings['update/hold'] : 'scheduled'); ?>

How long should FeedWordPress wait between updates before it considers this feed ready to be polled for updates again?

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.

for_feed_settings()) : $info['name'] = wp_specialchars($page->link->link->link_name, 1); $info['description'] = wp_specialchars($page->link->link->link_description, 'both'); $info['url'] = wp_specialchars($page->link->link->link_url, 1); $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(); if (FeedWordPressCompatibility::test_version(FWP_SCHEMA_21)) : $results = get_categories(array( "type" => 'link', "hide_empty" => false, )); // 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; else : $results = $wpdb->get_results("SELECT cat_id, cat_name, auto_toggle FROM $wpdb->linkcategories ORDER BY 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; // Hey ho, let's go ?> for_feed_settings()) : ?> __('Link Name'), "description" => __('Short Description'), "url" => __('Homepage'), ); foreach ($rows as $what => $label) : ?>
(validate)
Syndicated Link category:

FeedWordPress will syndicate the links placed under this link category.

Link Names:
Short descriptions:
Homepages:
link->id); } /* FeedWordPressFeedsPage::posts_box() */ function authors_box ($page, $box = NULL) { FeedWordPressSettingsUI::instead_of_authors_box($page->link->id); } /* FeedWordPressFeedsPage::authors_box() */ function categories_box ($page, $box = NULL) { FeedWordPressSettingsUI::instead_of_categories_box($page->link->id); } /* FeedWordPressFeedsPage::categories_box() */ function custom_settings_box ($page, $box = NULL) { ?>

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...
for_feed_settings()) : // Existing feed? if (is_null($lookup)) : $lookup = $this->link->link->link_url; endif; $name = wp_specialchars($this->link->link->link_name, 'both'); else: // Or a new subscription to add? $name = "Subscribe to ".wp_specialchars(feedwordpress_display_url($lookup)).""; endif; ?>

Feed Finder:

find(); if (count($feeds) > 0): foreach ($feeds as $key => $f): $rss = @fetch_rss($f); if ($rss): $feed_title = isset($rss->channel['title'])?$rss->channel['title']:$rss->channel['link']; $feed_link = isset($rss->channel['link'])?$rss->channel['link']:''; $feed_type = ($rss->feed_type ? $rss->feed_type : 'Unknown'); else : // Give us some sucky defaults $feed_title = feedwordpress_display_url($lookup); $feed_link = $lookup; $feed_type = 'Unknown'; endif; ?>
feed_version; ?> 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) > 0): // Prepare to display Sample Item $link =& new MagpieMockLink($rss, $f); $post =& new SyndicatedPost($rss->items[0], $link); ?>

Sample Item

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

Problem:

\n"; print "

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

"; print '

'.magpie_error().'

'; 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':$feed_title; ?>
  • Feed URL: (validate)
  • Encoding: encoding)?wp_specialchars($rss->encoding, 'both'):"Unknown"; ?>
  • Description: channel['description'])?wp_specialchars($rss->channel['description'], 'both'):"Unknown"; ?>
".__('Error').": ".__("FeedWordPress couldn't find any feeds at").' '.htmlspecialchars($lookup).''; print ". ".__('Try another URL').".

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

".__('Diagnostic information')."

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

".__('HTTP request failure')."

\n"; print "

".$f->error()."

\n"; else : print "

".__('HTTP request completed')."

\n"; print "

Status ".$f->status().": ".$this->HTTPStatusMessages[(int) $f->status()]."

\n"; endif; // Do some more diagnostics if the API for it is available. if (function_exists('_wp_http_get_object')) : $httpObject = _wp_http_get_object(); $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"; print "
\n"; endif; endif; ?>

Use another feed

stamp_link_id('link_id'); ?>
for_feed_settings()) : $alter = array (); // custom feed settings first foreach ($post['notes'] as $mn) : $mn['key0'] = trim($mn['key0']); $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}"] = (isset($post["hardcode_{$what}"]) ? $post["hardcode_{$what}"] : 'yes'); if (FeedWordPress::affirmative($this->link->settings, "hardcode {$what}")) : $alter[] = "link_{$what} = '".$wpdb->escape($post['link'.$what])."'"; endif; endforeach; // Update scheduling if (isset($post['update_schedule'])) : $this->link->settings['update/hold'] = $post['update_schedule']; endif; if (isset($post['use_default_update_window']) and strtolower($post['use_default_update_window'])=='yes') : unset($this->link->settings['update/window']); elseif (isset($post['update_window'])): if ((int) $post['update_window'] > 0) : $this->link->settings['update/window'] = (int) $post['update_window']; endif; endif; $alter[] = "link_notes = '".$wpdb->escape($this->link->settings_to_notes())."'"; $alter_set = implode(", ", $alter); // issue update query $result = $wpdb->query(" UPDATE $wpdb->links SET $alter_set WHERE link_id='{$this->link->id}' "); $this->updated = true; // reload link information from DB if (function_exists('clean_bookmark_cache')) : clean_bookmark_cache($this->link->id); endif; $this->link = new SyndicatedLink($this->link->id); else : // Global update_option('feedwordpress_cat_id', $post['syndication_category']); if (!isset($post['automatic_updates']) or !in_array($post['automatic_updates'], array('init', 'shutdown'))) : $automatic_updates = false; else : $automatic_updates = $post['automatic_updates']; endif; update_option('feedwordpress_automatic_updates', $automatic_updates); if (isset($post['update_window'])): if ((int) $post['update_window'] > 0) : update_option('feedwordpress_update_window', (int) $post['update_window']); endif; endif; update_option('feedwordpress_update_time_limit', ($post['update_time_limit']=='yes')?(int) $post['time_limit_seconds']:0); foreach (array('name', 'description', 'url') as $what) : // We have a checkbox for "No," so if it's unchecked, mark as "Yes." $hardcode = (isset($post["hardcode_{$what}"]) ? $post["hardcode_{$what}"] : 'yes'); update_option("feedwordpress_hardcode_{$what}", $hardcode); endforeach; $this->updated = true; endif; // Probably a "Go" button for the drop-down else : $this->updated = false; endif; } /* WordPressFeedsPage::accept_POST() */ } /* class FeedWordPressFeedsPage */ $feedsPage = new FeedWordPressFeedsPage; $feedsPage->display();