diff --git a/classes/feeds.php b/classes/feeds.php
index 86dd750ecba707eaa7439d3736895b04e466a553..eb08fc45246db03eafdfe44d9337364e9468bea1 100755
--- a/classes/feeds.php
+++ b/classes/feeds.php
@@ -2352,6 +2352,13 @@ class Feeds extends Handler_Protected {
 				break;
 		}
 
+		if (!$query) {
+			foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_HEADLINES_CUSTOM_SORT_OVERRIDE) as $p) {
+				list ($query, $skip_first_id) = $p->hook_headlines_custom_sort_override($order);
+
+				if ($query)	break;
+			}
+		}
 		return [$query, $skip_first_id];
 	}
 }
diff --git a/classes/pluginhost.php b/classes/pluginhost.php
index 0ab979c4bc28e9496e3835a4c62f9fd8c5ee4ca7..4fec13000eda02746ac4b649ec07b2b160108e59 100755
--- a/classes/pluginhost.php
+++ b/classes/pluginhost.php
@@ -66,6 +66,8 @@ class PluginHost {
 	const HOOK_FEED_TREE = 43;
 	const HOOK_IFRAME_WHITELISTED = 44;
 	const HOOK_ENCLOSURE_IMPORTED = 45;
+	const HOOK_HEADLINES_CUSTOM_SORT_MAP = 46;
+	const HOOK_HEADLINES_CUSTOM_SORT_OVERRIDE = 47;
 
 	const KIND_ALL = 1;
 	const KIND_SYSTEM = 2;
diff --git a/index.php b/index.php
index f1a8d0f0c0d472c96712f5789df43b8ebcbc4949..543d2b008120c265bbd7398a40d867c3205ce4b1 100644
--- a/index.php
+++ b/index.php
@@ -198,6 +198,14 @@
                 <option value="feed_dates"><?php echo __('Newest first') ?></option>
                 <option value="date_reverse"><?php echo __('Oldest first') ?></option>
                 <option value="title"><?php echo __('Title') ?></option>
+
+				<?php foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_HEADLINES_CUSTOM_SORT_MAP) as $p) {
+					$sort_map = $p->hook_headlines_custom_sort_map();
+
+					foreach ($sort_map as $sort_value => $sort_title) {
+						print "<option value=\"" . htmlspecialchars($sort_value) . "\">$sort_title</option>";
+					}
+				} ?>
             </select>
 
             <div dojoType="fox.form.ComboButton" onclick="Feeds.catchupCurrent()">