This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

Network Latest Posts


This plugin pull the recent posts from all the blogs in your network and displays them in your main site (or any internal site) using shortcodes or widgets.
For further details please visit: [English] [Espanol].

This plugin works with WordPress Network (multisites) Looking for single install versions?


CSS Classes

  • Unordered List:
  • ‘wrapper_o’ => <ul class=’nlposts-wrapper nlposts-ulist $wrapper_list_css’>
  • ‘wtitle_o’ => <h2 class=’nlposts-ulist-wtitle’>
  • ‘item_o’ => <li class=’nlposts-ulist-litem’>
  • ‘content_o’ => <div class=’nlposts-container nlposts-ulist-container $nlp_instance’>
  • ‘meta_o’ => <span class=’nlposts-ulist-meta’>
  • ‘thumbnail_o’ => <ul class=’nlposts-ulist-thumbnail thumbnails’>
  • ‘thumbnail_io’ => <li class=’nlposts-ulist-thumbnail-litem span3′><div class=’thumbnail’>
  • ‘pagination_o’ => <div class=’nlposts-ulist-pagination pagination’>
  • ‘title_o’ => <h3 class=’nlposts-ulist-title’>
  • ‘excerpt_o’ => <ul class=’nlposts-ulist-excerpt’><li>
  • Ordered List:
  • ‘wrapper_o’ => <ol class=’nlposts-wrapper nlposts-olist $wrapper_list_css’>
  • ‘wtitle_o’ => <h2 class=’nlposts-olist-wtitle’>
  • ‘item_o’ => <li class=’nlposts-olist-litem’>
  • ‘content_o’ => <div class=’nlposts-container nlposts-olist-container $nlp_instance’>
  • ‘meta_o’ => <span class=’nlposts-olist-meta’>
  • ‘thumbnail_o’ => <ul class=’nlposts-olist-thumbnail thumbnails’>
  • ‘thumbnail_io’ => <li class=’nlposts-olist-thumbnail-litem span3′>
  • ‘pagination_o’ => <div class=’nlposts-olist-pagination pagination’>
  • ‘title_o’ => <h3 class=’nlposts-olist-title’>
  • ‘excerpt_o’ => <ul class=’nlposts-olist-excerpt’><li>
  • Block:
  • ‘wrapper_o’ => <div class=’nlposts-wrapper nlposts-block $wrapper_block_css’>
  • ‘wtitle_o’ => <h2 class=’nlposts-block-wtitle’>
  • ‘item_o’ => <div class=’nlposts-block-item’>
  • ‘content_o’ => <div class=’nlposts-container nlposts-block-container $nlp_instance’>
  • ‘meta_o’ => <span class=’nlposts-block-meta’>
  • ‘thumbnail_o’ => <ul class=’nlposts-block-thumbnail thumbnails’>
  • ‘thumbnail_io’ => <li class=’nlposts-block-thumbnail-litem span3′>
  • ‘pagination_o’ => <div class=’nlposts-block-pagination pagination’>
  • ‘title_o’ => <h3 class=’nlposts-block-title’>
  • ‘excerpt_o’ => <div class=’nlposts-block-excerpt’><p>

$nlp_instance is replaced by .nlp-instance-X where X is a number o the name of the instance passed via shortcode. $wrapper_list_css and $wrapper_block_css
are replaced by the default values or those passed using the widget form or the shortcode.

Shortcode Options

This is an just an example with the default values which means I could have used [nlposts] instead, but this will show you how the parameters
are passed. For more examples please visit the Network Latest Post website.

[nlposts title=NULL
          wrapper_list_css='nav nav-tabs nav-stacked'
  • @title : Widget/Shortcode main title (section title)
  • @number_posts : Number of posts BY blog to retrieve. Ex: 10 means, retrieve 10 posts for each blog found in the network
  • @time_frame : Period of time to retrieve the posts from in days. Ex: 5 means, find all articles posted in the last 5 days
  • @title_only : Display post titles only, if false then excerpts will be shown
  • @display_type : How to display the articles, as an: unordered list (ulist), ordered list (olist) or block elements
  • @blog_id : None, one or many blog IDs to be queried. Ex: 1,2 means, retrieve posts for blogs 1 and 2 only
  • @ignore_blog : It takes the same values as blog_id but in this case this blogs will be ignored. Ex: 1,2 means, display all but 1 and 2
  • @thumbnail : If true then thumbnails will be shown, if active and not found then a placeholder will be used instead
  • @thumbnail_wh : Thumbnails size, width and height in pixels, while using the shortcode or a function this parameter must be passed like: ’80×80′
  • @thumbnail_class : Thumbnail class, set a custom class (alignleft, alignright, center, etc)
  • @thumbnail_filler : Placeholder to use if the post’s thumbnail couldn’t be found, options: placeholder, kittens, puppies (what?.. I can be funny sometimes)
  • @thumbnail_custom : Pull thumbnails from custom fields (true or false), thumbnail parameter must be true
  • @thumbnail_field : Custom field which contains the custom thumbnail URL
  • @thumbnail_url : Custom thumbnail filler URL
  • @custom_post_type : Specify a custom post type: post, page or something-you-invented
  • @category : Category or categories you want to display. Ex: cats,dogs means, retrieve posts containing the categories cats or dogs
  • @tag : Same as categoy WordPress treats both taxonomies the same way; by the way, you can pass one or many (separated by commas)
  • @paginate : Display results by pages, if used then the parameter posts_per_page must be specified, otherwise pagination won’t be displayed
  • @posts_per_page : Set the number of posts to display by page (paginate must be activated)
  • @display_content : Display post content instead of excerpt (false by default)
  • @excerpt_length : Set the excerpt’s length in case you think it’s too long for your needs Ex: 40 means, 40 words (55 by default)
  • @auto_excerpt : If true then it will generate an excerpt from the post content, it’s useful for those who forget to use the Excerpt field in the post edition page
  • @excerpt_trail : Set the type of trail you want to append to the excerpts: text, image. The text will be more, the image is inside the plugin’s img directory and it’s called excerpt_trail.png
  • @full_meta : Display the date and the author of the post, for the date/time each blog time format will be used
  • @display_date : Display post date along with other metadata, date is not displayed by default (false), set to true to display
  • @sort_by_date : Sorting capabilities, this will take all posts found (regardless their blogs) and sort them in order of recency, putting newest first
  • @sort_by_blog : Sort by blog ID
  • @sorting_order : Specify the sorting order: ‘newer’ means from newest to oldest posts, ‘older’ means from oldest to newest. asc/desc are used when blog ID is true
  • @sorting_limit : Limit the number of posts to display. Ex: 5 means display 5 posts from all those found (even if 20 were found, only 5 will be displayed)
  • @post_status : Specify the status of the posts you want to display: publish, new, pending, draft, auto-draft, future, private, inherit, trash
  • @css_style : Use a custom CSS style instead of the one included by default, useful if you want to customize the front-end display: filename (without extension), this file must be located where your active theme CSS style is located, this parameter should be used only once by page (it will affect all shorcodes/widgets included in that page)
  • @wrapper_list_css : Custom CSS classes for the list wrapper
  • @wrapper_block_css : Custom CSS classes for the block wrapper
  • @instance : This parameter is intended to differenciate each instance of the widget/shortcode/function you use, it’s required in order for the asynchronous pagination links to work
  • @random : Pull random articles
  • @post_ignore : Post ID(s) to ignore (default null) comma separated values ex: 1 or 1,2,3 > ignore posts ID 1 or 1,2,3 (post ID 1 = Hello World)
  • @alert_msg : Alert Message when NLPosts can’t find posts matching the values specified by user
  • @use_pub_date : Display the most recently published posts first regardless of the blog they come from
  • @honor_sticky : Sort sticky posts to the top of the list, ordered by requested sort order


  • NLPosts Shortcode in Edit Page
  • NLPosts Insert Shortcode Form
  • NLPosts Shortcode Output
  • Results by Page
  • NLPosts Multi-instance Widget
  • NLPosts Widget: Some Options
  • NLPosts Sidebar Widget Area
  • NLPosts Footer Widget Area
  • NLPosts in RTL Installation
  • NLPosts Shortcode & Widget in RTL


  1. Upload network-latest-posts folder to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. If you want to use the Widget, you can add the Network Latest Posts widget under ‘Appearance->Widgets’
  4. If you want to use the Shortcode, go to a page or post then click the NLPosts icon (green button in the TinyMCE editor) or use [nlposts] (that’s it, seriously!)


Why did you do this plugin?

Because I have 3 blogs and I needed a way to display the latest posts from them in the main blog of my Network.

If I want you to add a new feature, will you do it?

I like new ideas, but please keep it real and be patient, I try to work as fast as I can but I have also other things to do :).

What do I need in order to make this plugin work for me?

Technically nothing, but the pagination feature uses jQuery to load the content without reloading the page. It’s prettier that way but it’s up
to you (pagination is not Javascript dependant, no jQuery = no fancy loading effects that’s all). jQuery is included by default in WordPress, so you don’t need to do anything or add anything.

I can’t see the thumbnails

Your theme have to support thumbnails, just add this to the function.php inside your theme folder:

OMG this plugin is awesome! I want to buy you a coke and send you a message, where can I do it?

Please visit my website if you want to support my work please consider making a donation, even $1 can help me pay my web server. If you have no money, then you can write something nice
about me and my work, then send it to opensource[at]

Is there a plugin like this for single WordPress installations?

Yes, I’ve released a version for single installations, check it out, you can also download the lite version for FREE


nice and works

This Plugin does exactly what I expected. List the post of other sites. It is a mass of options to configure each time inserting these function, but is okay – you maybe need these options.

Only point is, that the style is not so nice. It is ok, but maybe I will adjust it by theme for a greater look.
And, how frank tredici says, ‘show date’ does not work without ‘show full meta data’.

Thanks for this great plugin.

Great Plugin

I needed to pull-in posts from just 1 of my 70 sites in the network onto a sidebar widget in a separate related site.

Plugin Installation – quick and easy.
Widget setup – quick and easy.

Widget setting for “Display Post Date” set to “Yes” does not work unless you also set “Full Metadata” to “Yes”. I just wanted blog publish date. So the plugin gets a 4 out of 5 stars.

Now onto styling which shouldn’t be too hard. Thank you for this plugin. You just saved me a day or so of work.


Awesome plugin! Just what I was looking for. I needed to show many posts from diferent sites inside my blog. This did the job and more. I’m really pleased!

Thanks for your magic!!

Read all 20 reviews

Contributors & Developers

“Network Latest Posts” is open source software. The following people have contributed to this plugin.


Translate “Network Latest Posts” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • Fixed notices: warning notices for undeclared variables
  • Added Iranian translation


  • Improved pagination, replaced $.live by $.on supporing newest versions of jQuery


  • New parameter: display_date, allows to display post dates along with other metadata
  • Feature enhancement: Paginated posts are now compatible with newest versions of jQuery and page is auto-scrolled to put new pages into browser view.


  • Pagination fixed, improved jQuery function to fix and speed up paginated results.


  • Improved widget class security for compatibility with certain PHP configurations.
  • Tested compatibility with WordPress 4.1.1


  • Added filters for custom HTML tags.


  • Bug in translation file fixed, Greek (el) was being used as Hebrew (he_IL).


  • New parameter: use_pub_date which allow users to sort posts by publication date instead of modification date.
  • New parameter: honor_sticky which keeps sticky posts at the top of results.
  • Added translations: Danish, German, Dutch, Hebrew, Swedish, Portuguese (Brazil), Norwegian. Some of those are parcial translations.
  • Entering deprecated mode, 3.5.5 will be the last oficial update for branch version 3. Next major release will include lots of improvements and will make some of the current ones change or disappear. Stay tuned.


  • Support for date localization (specially in German) using i18n, thanks to Claas Augner for the patch.


  • Fixing line returns when using display_content parameter. Mixing nl2br and do_shortcode to do the job.


  • Replacing nl2br by do_shortcode to fix an incompatibility issue with Vipers shortcodes.


  • Added catch to avoid warnings when NLPosts can’t find posts matching your parameters. Now it will display a message letting you know, no posts matching your criteria were found.


  • Added parameter display_content which allows you to display posts content instead of excerpts, minor bug fixes


  • Added parameter thumbnail_url which you can use to specify a custom thumbnail filler, this parameter must be a URL address


  • Adding missing strings to Norwegian translation, thanks to kkalvaa


  • Replacing language loadtext order to avoid some strings being ignored by translation files, thanks to kkalvaa for spotting this and contributing with the Norwegian Bokmål translation!


  • Fixed bug while using sort_by_date and sort_by_blog, sorting capabilities were not working properly. Thanks to Julien Dizdar for reporting this bug.


  • Fixing typo in $thumbnail_custom variable
  • Added German language provided by Claas Augner


  • Added CSS class ‘nlposts-siteid-x’ to each element so they can be styled depending on which blog they were pulled from


  • NEW Feature: Ignore posts by ID. Now you can ignore certain posts by their IDs ex: post_ignore=1 ignores all “Hello World” posts


  • Added post title to alt and title tags for thumbnails


  • Fixing Display Blogs and Ignore Blogs lists in the Shortcode form


  • NEW Feature: order by blog ID. Now you can sort by blog ID using sort_by_blog=true and sorting_order=asc or sorting_order=desc


  • Bug fixed. Excerpts were being taken from content only and not from excerpts fields


  • NEW Feature added Custom Thumbnail thumbnail_custom, thumbnail_field which allows you to specify custom fields for thumbnails


  • Fixing a bug when placed before comments forms.


  • Due to an incompatibility issue between the Visual Composer plugin and the WordPress hook strip_shortcodes, NLposts is using regex now.


  • Replacing wp_enqueue_scripts by admin_enqueue_scripts to solve styling issues in the TinyMCE button


  • Fixed notice for wp_register_style when debug has been turned on


  • NEW Feature added random allows you to pull random posts from database


  • Register ids changed to better identify NLPosts


  • Patch for fixing wp_register_sidebar_widget and wp_register_widget_control thanks to cyberdemon8


  • It’s now possible to specify multiple custom types (comma separated)
  • Two deprecated functions register_sidebar_widget and register_widget_control were updated to add the new prefix wp_ used since WordPress version 2.8


  • Custom post type variable fixed, it was using post_type instead of custom_post_type thanks to ricardoweb for spotting this


  • Adding translation domain to the full meta strings.


  • Fixed excerpt functions, the excerpt_length parameter wasn’t pulling the right number of words, if not specified 55 words will be used by default (WordPress defaults)


  • Fixed Shortcode’s JavaScript function when used through the TinyMCE editor, there was a problem when using multiple categories or tags. It also inserted the thumbnail_w & thumbnail_h which aren’t needed.


  • Added wrapper_list_css & wrapper_block_css, these parameters permit to customize the CSS classes for the wrapper tag
  • Fixed minor bug in the Shortcode TinyMCE form which inserted the Submit button to the list of parameters


  • Adding Blog name to the meta info when using Widgets
  • Added shortcode form CSS styles


  • Adding Blog name to the meta info


  • Fixing call to the widget class from the shortcode form, the TinyMCE shortcode button should be working now


  • Bug “Problem with 3.0, unexpected T_FUNCTION” Fixed, add_action on line 1092 modified to provide compatibility with PHP versions < 5.3


  • Network Latest Posts was totally rewritten, it no longer uses Angelo’s code. WordPress hooks took its place. All the nasty hackery and workarounds
    are gone.
  • Support for RTL installations added.
  • Sorting capabilities added, it’s now possible to display the latest posts first regardless the blogs they were found.
  • Name changed for some parameters to match their functionality.
  • Some parameters no longer exist (display_root, wrapo, wrapc) they are no longer useful
  • Thumbnail size, class and replacement added
  • Display type added, 3 styles by default, it makes it easier for people with limited CSS knowledge to tweak the visual appearance.
  • Fixed some bugs in the auto_excerpt function
  • CSS style allows you to use your own css file to adapt the output to your active theme (when used it will unload the default styles)
  • Instance is used to include multiple instances in the same page as a widget or as a shortcode, fixing the pagination bug which didn’t work when used multiple times.
  • Widget now includes multi-instance support extending the WP_Widget class, you can added as many times as you want to all your widgetized zones.
  • Shortcode button added to the TinyMCE editor, now you just need to fill the form and it will insert the shortcode with the parameters into the post/page content.
  • Renamed some functions to avoid incompatibility with other plugins using default function names.
  • Main folders and sub-folder installations supported.


  • NEW feature added auto_excerpt will generate an excerpt from the post’s content
  • NEW feature added full_meta will display the author’s display name, the date and the time when the post was published


  • Excerpt Length proposed by Tim (
  • It’s possible now to display the posts published in the main blog (network root) using the display_root parameter


  • Bug fix: When using only one category only one article from each blog was displayed. Now it displays the number specified with the number
    parameter as expected – Thanks to Marcalbertson for spotting this


  • Added missing spaces before “published in” string: Lines 347, 358 & 399 – Spotted by Josh Maxwell


  • NEW feature added cat which allows you to filter by one or more categories – Proposed by Jenny Beaumont
  • NEW feature added tag which allows you to filter by one or more tags – Proposed by Jenny Beaumont
  • NEW feature added paginate which allows you to paginate the results using the number parameter as the number of results to display by page
  • NEW CSS file added
  • NEW img folder added


  • Fixed the repeated <ul></ul> tags for the widget list
  • NEW feature added cpt which allows you to display a specific post’s type (post, page, etc) – Proposed by John Hawkins (
  • NEW feature added ignore_blog which allows you to ignore one or various blogs’ ids – Proposed by John Hawkins (
  • Added the Domain name with the IDs to the list of blog ids in the Widget
  • Some other minor bugs fixed


  • Fixed the missing <ul></ul> tags for the widget list
  • NEW feature added blogid which allows you to display the latest posts for a specific blog
  • NEW feature added thumbnail to display the thumbnail of each post
  • The widget includes now a list where you can select the blog’s id for which you want to display the latest posts


  • Added Widget option to display excerpt
  • Markup improved to make CSS Styling easier
  • Added Uninstall hook
  • Added Shortcode functionality
  • Plugin based in Multisite Recent Posts Widget