JMS Rss Feed
by James · Content & Feeds
Add the featured image tag in your posts RSS feed. For standard RSS feed XML, there is no image tag definition. This plugin will show the post featur …
42 health vs 60 average across 778 Content & Feeds plugins
High removal-risk signals
63/100Maintenance and integrity signals that tend to precede a WordPress.org removal. Not an official status, a heads-up to act.
- Long abandoned. No update in 8+ years — the top precursor to removal once a vulnerability is found.
- Compatibility drift. Tested only up to WordPress 4.9.0, well behind 6.8.
Directory ranking optimization
How it's scored →How well this listing is tuned to rank in WordPress.org search, on the factors an owner controls. Not popularity, optimization.
Under-optimized
Biggest win: Update recency
To rank higher: Last updated 3077 days ago — ship an update; wp.org decays a listing's search weight after ~180 days.
Get the full rank-higher report →Daily downloads
Since 2022-10-05 · 1,426 days · wp.org + Plugin Pulse archive
30-day downloads
Rolling 30-day volume · peaks are release surges
54
now · peak 168
Directory rank vs rivals
wp.org popularity rank over time · higher is better · when a rival's line climbs above yours, they've overtaken you
Update activity
How busy the existing users are, measured as downloads in the last 30 days for every 1,000 active sites. A spike means a new release everyone's pulling; a long, slow decline means an aging user base that updates less.
What its installed base runs
via wordpress.orgShare of active installs on each version of this plugin. Green is the current release; a big slice on older versions is a user base that has stopped updating.
Estimated active installs
The public count shows “10+”. Our estimate pins where the real number sits.
Refined from the date this plugin crossed into its current band.
Install history · since 2022-10-04 · 1,383 observations
Estimated value
What this plugin might earn a year, and what it might sell for. Modeled from public signals; we don't see anyone's books.
Est. annual revenue
Est. acquisition value
No paid tier is visible, so we don't put a figure on revenue or sale value: that would be guessing. The install base is a real asset to an acquirer, just not one public data lets us price. A small install base leaves thin data to model from.
Details
Recent reviews
All reviews on wp.org ↗- ★★★★★ Frédéric Malo10.6y ago
Hello, The description is not correct. This plugin sends notifications, and downloaders are not informed : “This plugin only does one task, adding your posts’ featured image to the RSS feed in tag. It will show your full size featured image url in the tag.” Here is the source code of version 3.0 <?php /* Plugin Name: JMS Rss Feed Plugin URI: http://www.jmsliu.com/products/jms-rss-feed Description: Adds the featured image tag <jms-featured-image> to your posts to the RSS feed. Author: James Liu Version: 3.0 Author URI: http://jmsliu.com/ */ global $jms_rss_db_version; $jms_rss_db_version = ‘1.0’; add_action(‘rss2_item’, ‘add_jms_img_rss_node’); add_action( ‘publish_post’, ‘send_push_notification’, 10, 2 ); //work together add_filter(‘query_vars’, ‘add_jms_single_post_var’); add_action(‘parse_request’, ‘return_jms_single_post’); //install database register_activation_hook( __FILE__, ‘install_jms’ ); function add_jms_img_rss_node() { global $post; if(has_post_thumbnail($post->ID)) { $thumbnail = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), “full”); echo “<jms-featured-image>”.$thumbnail[0].”</jms-featured-image>”; } } function add_jms_single_post_var($vars) { $vars[] = ‘jms_rss_post_url’; $vars[] = ‘jms_rss_action’; $vars[] = ‘jms_rss_token’; $vars[] = ‘jms_rss_send’; return $vars; } function send_push_notification($ID, $post) { global $wpdb; $table_name = $wpdb->prefix . ‘jms_rss_android_listener’; $devicesList = $wpdb->get_results(“SELECT * FROM $table_name WHERE state=1”, “ARRAY_A”); $wpdb->flush(); if ( $devicesList ) { define(“GOOGLE_API_KEY”, “AIzaSyDYVTahqUmT4RX6brZnReUr6Rq2KNEUv90”); $deviceList = array(); foreach ( $devicesList as $device ) { $token = $device[“device_token”]; if(strlen($token) > 10) { $deviceList[] = $token; } } //$author = $post->post_author; //Post author ID //$name = get_the_author_meta( ‘display_name’, $author ); //$email = get_the_author_meta( ‘user_email’, $author ); $title = $post->post_title; //$permalink = get_permalink( $ID ); //$edit = get_edit_post_link( $ID, ” ); //$subject = sprintf( ‘Published: %s’, $title ); $message = sprintf (‘The article “%s” has been published.’, $title); //$message .= sprintf( ‘View: %s’, $permalink ); sendNotification($deviceList, $message); } } function return_jms_single_post($wp) { global $wpdb; //this is for test if(array_key_exists(‘jms_rss_send’, $wp->query_vars)) { $action = $wp->query_vars[‘jms_rss_send’]; if($action == ‘1’) { $table_name = $wpdb->prefix . ‘jms_rss_android_listener’; $devicesList = $wpdb->get_results(“SELECT * FROM $table_name WHERE state=1”, “ARRAY_A”); $wpdb->flush(); if ( $devicesList ) { define(“GOOGLE_API_KEY”, “AIzaSyDYVTahqUmT4RX6brZnReUr6Rq2KNEUv90”); $deviceList = array(); foreach ( $devicesList as $device ) { $token = $device[“device_token”]; if(strlen($token) > 10) { $deviceList[] = $token; } } sendNotification($deviceList, “Hello World!”); } } exit; } if (array_key_exists(‘jms_rss_action’, $wp->query_vars)) { $action = $wp->query_vars[‘jms_rss_action’]; if(!empty($action)) { if($action == “register_android”) { $token = $wp->query_vars[‘jms_rss_token’]; $table_name = $wpdb->prefix . ‘jms_rss_android_listener’; $wpdb->query( $wpdb->prepare( “ INSERT INTO $table_name ( device_token, state, reg_date ) VALUES ( %s, %d, %s ) “, array( $token, 1, current_time(‘mysql’, 1) ) ) ); echo $wpdb->insert_id; exit; } } } if (array_key_exists(‘jms_rss_post_url’, $wp->query_vars)) { //for old usage only $url = $wp->query_vars[‘jms_rss_post_url’]; $postid = url_to_postid( $url ); $post = get_post($postid); //print_r($post); echo $post->post_content; exit; } } function install_jms() { global $jms_rss_db_version; global $wpdb; $installed_ver = get_option( “jms_rss_db_version”, null ); if ( $installed_ver == null ) { $table_name = $wpdb->prefix . “jms_rss_android_listener”; $charset_collate = $wpdb->get_charset_collate(); $sql = “CREATE TABLE IF NOT EXISTS $table_name ( id INT NOT NULL AUTO_INCREMENT , device_token VARCHAR(255) NOT NULL , state TINYINT NOT NULL COMMENT ‘0 disabled\n1 enabled’ , reg_date DATETIME NOT NULL , PRIMARY KEY (id), UNIQUE INDEX id_UNIQUE (id ASC) , UNIQUE INDEX device_token_UNIQUE (device_token ASC) ) ENGINE = INNODB $charset_collate;”; require_once( ABSPATH . ‘wp-admin/includes/upgrade.php’ ); dbDelta( $sql ); add_option( “jms_rss_db_version”, $jms_rss_db_version ); } } function sendNotification($registrationIDs, $message) { //$registrationIDs = array( “reg id1″,”reg id2”); $url = ‘https://gcm-http.googleapis.com/gcm/send’; $fields = array( ‘registration_ids’ => $registrationIDs, ‘data’ => array( “message” => $message ), ); $headers = array( ‘Authorization: key=’ . GOOGLE_API_KEY, ‘Content-Type: application/json’ ); // Open connection $ch = curl_init(); // Set the URL, number of POST vars, POST data curl_setopt( $ch, CURLOPT_URL, $url); curl_setopt( $ch, CURLOPT_POST, true); curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true); //curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields)); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // curl_setopt($ch, CURLOPT_POST, true); // curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode( $fields)); // Execute post $result = curl_exec($ch); // Close connection curl_close($ch); echo $result; //print_r($result); //var_dump($result); } ?>
Read on wp.org ↗
Behavioral tests
via WP HiveAutomated install-time checks, tested on PHP 7.2.16 · WP 5.3.2
Growth timeline
Install-tier crossings we have observed, and how long each tier took to outgrow
- 2026-07-15 20+ → 10+ down after 151 days in tier
- 2026-02-14 30+ → 20+ down after 585 days in tier
- 2024-07-09 40+ → 30+ down
Competes with
The plugins that solve the same job, ranked by shared tags then reach, closest match first. The letter on the right is each plugin's health grade (A best, F worst).
- A Add Featured Image to RSS Feed 2K+ installs · 4.1★ · 5 shared tags B
- F Featured Image Admin Thumb 20K+ installs · 4.5★ · 2 shared tags A
-
Multiple Featured Images 5K+ installs · 4.5★ · 2 shared tags D -
Feed Post Thumbnail 2K+ installs · 4.0★ · 2 shared tags B
-
Featured Image in RSS Feed by MailerLite 1K+ installs · 4.0★ · 2 shared tags C -
SB RSS feed plus 1K+ installs · 3.9★ · 2 shared tags D
Embed this report card
Drop a live Pulse card for JMS Rss Feed into a readme, a review or a deck. It updates itself.
<iframe src="https://plugins.wpmayor.com/embed/jms-rss-feed" width="480" height="300" style="border:0" loading="lazy" title="JMS Rss Feed — Plugin Pulse"></iframe> JMS Rss Feed: 10+ active installs, 1.0★ (1 reviews). Plugin Pulse (WP Mayor), as of 2026-08-31. https://plugins.wpmayor.com/plugin/jms-rss-feed