Plugin Directory

Test out the new Plugin Directory and let us know what you think.

List category posts

List Category Posts allows you to list posts by category in a post/page using the [catlist] shortcode. This shortcode accepts a category name or id, t



  • Update lcp-widget.php for PHP 7 compatibility. Thanks @kenshin23!


Thanks @mmatthews1981, @ottadvantage and @mhoeher for their contributions on this version:


  • Bugfix release, this should fix the issues with Parent Categories listings.


  • Adds custom css class to current page in pagination lcp_currentpage.
  • Adds child_categories parameter to being able to exclude child categories' posts from a list.
  • New feature to look for the first image in a post when requesting a thumbnail and the post has no featured image. Thanks Michael J. Gibbs for writing this code :)


  • Full release notes: https://github.com/picandocodigo/List-Category-Posts/releases/tag/0.66
  • Orders the README a bit.
  • Issues with tags when using more than one tag for OR and AND relationships should be fixed.
  • Documented the use of custom taxonomies. For some reason I never came around to do that. I changed the parameters for taxonomies, it used the 'tags' parameter for 'terms' before, so I added a 'terms' parameter to make this independent from the tags parameter. So now it looks like this: [catlist taxonomy='person' terms='bob']. This might break some current uses of taxonomy, but since it was written so long ago and I don't know why it used "tags", I decided to just create the 'terms' parameter. People using the custom taxonomies were people who are looking at the code anyway since I can't find it documented anywhere. Sorry for the inconveniences!
  • Adds category description parameter.
  • Adds orderby and order to options page. Removes default values since they're the default anyway.


  • Adds pagination parameter to the options page.
  • Changes the loop in the default template.
  • Fixes 'morelink_class not working with templates' in the default template.
  • Adds link to post wrapper for the post date. If you have a chance, please thank bibz who is doing awesome Pull Requests to this plugin and occasionally helping out on the support forums here too :)


  • Fixes get_current_tags
  • Some updates on the documentation
  • Introduces a conditional title, only displayed when posts are found, thanks bibz for this Pull Request!
  • Introduces customfield_display_separately, customfield_display_glue and customfield_display_name_glue parameters for multiple custom fields handling by bibz. Thanks! :D


  • Remove renamed file (Damn using subversion), should fix issues updating.


  • Vagrant box and development environment improved by bibz
  • Tested with WordPress 4.3, updated Widget constructor because of PHP 4 deprecation.


  • Dutch translation by Gerhard Hoogterp, thank you!
  • Re-add the loop fixes and fixes function missing from last time by Sophist-UK, thanks!
  • Allow to order by the modified date in the widget by bibz, thanks!


  • Adds Portuguese from Portugal (pt_PT) translation, muito obrigado Joaquim Félix!
  • Fixes translation paths, thanks monpelaud!.


  • Reverts switching to the loop til we find a way around for using templates.


  • Fixes the loop so that other plugins work as if this was a blog or archive post. See issue #156 on Github. Thanks Sophist-UK for this new version :)


  • Tested with WordPress 4.2
  • Sophist's fix: Check for multi-byte functions installed and use ascii functions if not.


  • Fix some errors


Thanks Sophist from UK for this release :)

By Sophist:

  • Fix error causing call to undefined method
  • Add excerpt=full to allow either full explicit excerpt or use <?--more--> to define where the excerpt ends.
  • Fixes link_titles=false creates plain text rather than unlinked formatted text as you might expect.
  • Fixes title_limit not working correctly

Other minor fixes by me.


  • Fixes an error with pagination links. Accessing $_SERVER filtered not working on some servers, have to investigate further for a future version.
  • Addresses warning messages when debug enabled.


  • Removes filter interfering with filters set by other plugins. Thanks zulkamal for the Pull Request!
  • Adds option to display titles without links. Thanks zulkamal for this Pull Request too! :D
  • Workaround to prevent '?&' to appear in URLs. Thanks mhoeher for the Pull Request!
  • General refactors for improving code quality/security.
  • Fixed typo in Readme (Thanks Irma!).
  • Fixes excluding tags when using category name (should fix other issues with category name too since there was a bug there).


  • Add custom image sizes to the list of selectable image sizes in the widget. Thanks nuss for the Pull Request!
  • New Attribute 'no_post_titles'. Thanks thomasWeise for the Pull Request!
  • Finnish localization. Thanks Newman101 for the Pull Request!


  • Adds Indonesian (Bahasa Indonesia) translation. Thanks Dhyayi Warapsari!
  • Adds french from France language. Thanks Dorian Herlory!
  • Adds content=full parameter to ignore tags when displaying content. Thanks Sophist-UK!
  • Fixes excluded_tags parameter



  • Fixes call to undefined method lcp_get_current_post_id()


  • Fixes bug in LcpParameters.


  • Adds http/https check for pagination links.
  • Fixes post_status and post_type parameters for using multiple post statuses and types.
  • Big refactor: Thumbnail code, parameters moved to new class, created util class, removed bad and repeated code, moved category code to new class. Small fixes all around the place. Went from a very bad 1.77 GPA to 3.23 on CodeClimate.


  • Makes "starting_with" parameter accept several letters, by Diego Sorribas. Thank you!


  • Small fix for pagination and query string.
  • Fix on multiple categories with AND relationship.
  • Fixes options page 404 and saving options.
  • Tested with WordPress 4.1.


  • Fixes translations, updates Spanish translation. Translators, please update your po and mo files and submit them via pull request on GitHub :)
  • Test compatibility with WordPress 4.0
  • Adds icon for WordPress 4.0 new plugin interface.
  • Fixes posts_morelink and customfields for templates.
  • Adds fixes by htrex:
    • Fix custom template regression
    • Fix excluded categories not working in widget


  • Addresses some warnings / scandir on Displayer and catname on widget
  • Fixes lcp_paginator.css path
  • Some small sanitations


  • Small fix on templates


  • Fixes issue with catlink.
  • Fixes issue with templates named "default"


  • Adds Thai translation by itpcc.
  • The widget can now select an existing template. Thanks Borjan Tchakaloff!
  • Templates code was refactored.


  • Makes sure "starting_with" queries are case insesitive.
  • Fixes category link on 'catlink' and 'catname' parameters (were showing twice)


  • Adds author_posts_link, to show an author's page.
  • Adds catname parameter to show just the category name (and not the link). Thanks user sirenAri from the forum.
  • Small bug fix for getting current category. Used to check against simple string, now checking against i18n'ed one.


  • Bug fixes
  • Adds parameter to show modified date of posts. Thanks Eric Sandine for the Pull Request :)


  • Adds Ukranian translation by Michael Yunat http://getvoip.com
  • Adds display_id parameter. Set it to yes to show the Post's ID next to the post title.
  • Adds starting_with parameter. Gets posts whose title start with a given letter.


  • Finally (hopefully) fix the excerpt issues.


  • Fix something that I broke on previous update for excerpt :S


  • Some fixes on displaying excerpt.


  • Fixes quotes bug on title tag.
  • Only show ellipsis when title.size > title_limit when using the title_limit param.


  • Adds "the_excerpt" filter to excerpt to improve compatibility with the Jetpack plugin.
  • Add character limit to title
  • Removes debug warnings
  • Output valid HTML, attribute quotations - thanks Nikolaus Demmel!


  • Adds ol default template to template parameter.
  • Improves documentation.


  • Removes warning when using current tag in pages
  • Small fix on Readme


  • Adds the feature to get an author's posts
  • Adds show posts from current post's tags.


  • Show "no posts text" only if it's been set and there are no posts, otherwise behave like before.


  • Removes filters to order by (should fix issues with order)
  • Adds pagination_prev and pagination_next params to customize the "Previous" and "Next" buttons on pagination navigation.
  • Only show pages in pagination when they are > 1
  • Adds no_posts_text param to display a custom message when no posts are found
  • Fixes "morelink" class parameter (now can be used without specifying an HTML tag and the class is applied to the a tag).


  • Adds missing title attribute from thumbnail links.


  • Fixes pagination numbers
  • Removes warning on wp-debug set to true


  • Fixes some debug warnings (Ruby's nil doesn't apply in the PHP World)


  • Fixes excludeposts=this.
  • Adds customfield_tag and customfield_class to customize an HTML tag and CSS class for custom fields.


  • Small bugfix with customfield_display_name (wasn't working now it is)


  • Fixes customfield display name.
  • Fixes size in getting thumbnails, now checks for all available sizes and defaults ("thumbnail", "full", etc.)


  • Adds options page, to set the default numberposts value globally.
  • Adds customfield_display_name param.
  • Adds pagination to custom template.
  • Fixes date display.
  • Adds conditions to Vagrantfile to boot faster and not repeat work.
  • Fixes exclude posts, broken when migrating from get_posts to WP_Query.


  • Small fix closing quotes on content when using


  • Tested with WordPress 3.8
  • Removes unnecessary stuff on wp_enqueue_styles
  • Fixes validation when using quotes in title
  • Fixes on tag
  • Fixes on title HTML tag and CSS class. (See HTML & CSS Customization on Other Notes to check the expected behaviour)


  • Adds "post suffix" parameter, to add a String after each post listed. Source


  • Adds pagination. Check Pagination on Other notes to learn how to use it.
  • Adds "How to display thumbnails next to title" to the FAQ.
  • Adds a Vagrant box for developers to be able to start coding with no effort :)


  • Supports more tag. If there's a <!--more--> tag in the post, then it will behave just as WordPress does: only show the content previous to the more tag.
  • Fixes YouTube thumbnails: Includes "embed" urls for youtube video thumbnails, makes correct img tag when using CSS class.


  • Fixed category_count for several categories.


  • Fixed catlink to display titles for all the categories when using more than one category.


  • Adds option for "target=_blank" for post links.
  • Adds option to exclude category when using the and relationship: [catlist id=1+2-3] will include posts from categories 1 and 2 but not 3.


  • Updated Turkish translation, thanks again Hakan Er!
  • Adds feature to order by custom field using the customfield_orderby parameter.


  • Bugfix (removed var_dump)


  • Now accepts either class or tag or both for styling elements (such as date, author, etc. to display). When just using a tag, it will sorround the element with that tag. When using just a class, it will wrap the element between span tags and the given CSS class. Check Other notes under HTML & CSS Customization for more info.
  • Fixed bug on post_status, it used to show all published posts and if user was logged in, all private ones too. Now you can specify 'private' to just display private posts, and draft, publish, draft, etc (See post_status param on the instructions for more info).




  • Pull request from @cfoellmann, adds testing environment and Travis CI integration. Awesomeness.
  • When searching for a thumbnail, if there's no thumbnail on the post but there's a YouTube video, display the YouTube video thumbnail. (wordpress.org/support/topic/youtube-thumbnail)


  • Bugfix release, fixes current category for post/page


  • Improves 'current category' detection.
  • Adds categorypage parameter to widget


  • excerpt - Fixed default excerpt behaviour from previous release. By default it will strip html tags as it always did. If you want it not to strip tags, you'll have to use excerpt_strip=no. Added a new parameter to have a consistent excerpt. If you want to overwrite WordPress' excerpt when using the plugin and generate one the way the plugin does when there's no excerpt, use excerpt_overwrite=yes.


  • Adds ability to exclude tags.
  • Changes excerpt. Since lot of users have asked for it, I once again modified the way the excerpt is shown. It now respects your theme's allowed HTML tags and doesn't strip them from the excerpt. If you want to strip tags, use excerpt_strip=yes.


  • Adds turkish translation, thanks Hakan Er for writing this translation! :)
  • Adds "AND" relationship to several categories. Thanks to hvianna from the WordPress forums who implemented this feature :D
  • More improvements on readme.


  • Improvements on readme, faqs.
  • New posts_morelink param: adds a 'read more' link to each post.


  • Sets minimum version to WordPress 3.3, since wp_trim_words was introduced in that version. Adds workaround for people using WordPress < 3.3.
  • Adds Slovak translation by Branco from WebHostingGeeks.com.
  • Removes Debug PHP warnings.
  • Checkboxes on Widget save state, i18n for widget.
  • Adds excerpt size to widget.


  • Fixes to widget.
  • Adds year and month parameters to list posts from a certain year and/or month.
  • Adds search parameter to display posts that match a search term.


  • Adds i18n, German and Spanish translations. All credit to cfoellmann for implementing this and writing the German translation. Thanks! :)


  • Changed excerpt limit, it uses word count, and is working for WordPress' excerpt and auto generated ones.


  • Better excerpt
  • Applies title filter, should work with qTranslate
  • Adds post status parameter
  • Adds meta links to plugin page - most importantly: INSTRUCTIONS (please read them).


  • Fixes "excerpt doesn't strip shortcodes" - https://github.com/picandocodigo/List-Category-Posts/issues/5
  • Exclude currently displayed post - 1, 2
  • Add title to category title 1, will be improved.
  • Attempting to condition whitespaces to WordPress Coding Standard (emacs php-mode sucks for this...)
  • No more git-svn crap, now I'm developing this over at (GitHub)[https://github.com/picandocodigo/List-Category-Posts] and copying it into the WordPress SVN Repo.


  • Bugfix release


  • Bugfix release


This update is dedicated to Michelle K McGinnis who bought me "Diamond Age" by Neal Stephenson from my Amazon Wishlist. Thanks! :D

  • Added excerpt size. You can set how many characters you want the excerpt to display with 'excerpt_size'.
  • Fixed HTML tag and CSS class for each element (Check Other notes for usage).
  • Removed shortcodes from excerpt.



  • Fixed bug with the categorypage=yes param.
  • Tested with WordPress 3.3.


  • Fixed accidentally deleted line which made the catlink=yes param not work.


  • Added CSS "current" class hook for current post in the list: .current class attached to either the li or a tag of the currently viewed page in the said list. http://wordpress.stackexchange.com/q/35552/298
  • Added morelink parameter, check Other notes for usage.


  • Removed var_dump... (Sorry about that)


  • Small fixes:
    • Used "empty()" function for some Strings instead of evaluating isset() and != ''.
    • Include parameters on the get_posts args only when they are set (post_parent among others).


  • Added 'thumbnail_class' parameter, so you can set a CSS class to the thumbnail and style it.


  • Brought back the multiple categories functionality for the id parameter. Hopefully the last 0.20 bugfix release so I can start working on new stuff to implement.
  • Now the name parameter accepts multiple categories too. Just use: [catlist name=category1,category2]


  • Yet another bugfix, regarding nothing being displayed when using tags.


  • Fixed category detection code, which created some messy bugs in some cases


  • Minor bugfix release



  • Added the possibility to list posts from the current post's category
  • Some fixes to documentation



  • Small fix, missing parameter for taxonomy.



This update is dedicated to S. Keller from Switzerland who gave me "The Ultimate Hitchhiker's Guide to the Galaxy" from my Amazon Wishlit in appreciation for the plugin. I am really enjoying the read :D. If you, like S would like to show your appreciation, here's my wishlist:


  • Small excerpt fix, some readme file fixing too.
  • Not showing the_content for password protected posts.


  • Small fixes. Should work for name parameter in all cases now.


  • Added slug and name to the fetching of category id from previous update.


  • Fixed category id bug. Reported and fixed by Eric Celeste - http://eric.clst.org, thanks!
  • Improved template system a liitle bit, now you can pass an HTML tag and a CSS class to sorround each field on your template.
  • Added category link which wasn't working after previous big update.


  • Fixed displaying of "Author:" even when not being called.


  • Major rewrite. The whole code was rewritten using objects. It's easier now to develop for List Category Posts.
  • Both STYLESHEETPATH and TEMPLATEPATH are checked for templates.


  • Fixed shortcode nesting.




  • Added custom fields support. Define both custom field (customfield_name) and value (customfield_value) to use it.


  • Fixed "Show the title of the category with a link to the category" code (catlink param), it broke on some previous update, but now it's working again. Thanks Soccerwidow on the WP Forums for pointing this out.


  • Added "post_type" and "post_parent" from the underlining "get_posts()" API to be usable within the short-code. By Martin Crawford, thanks!
  • Added the "class" parameter to style the default ul. You can pass a class name, or the plugin will use "lcp_catlist" bby default. Thanks Chocolaterebel (http://wordpress.org/support/topic/plugin-list-category-posts-sharing-my-own-template-in-lcp).
  • Fixed "tags" parameter on the documentation, it used to say "tag", and the plugin looks for "tags".


  • Fixed thumbnail code, added it to default.php template as example.


  • Fixed broken dateformat.



  • Added comments count.
  • Updated readme file


  • Another minimal bug fixed with the excerpt...


  • Fixed small bug which made the excerpt show up everytime... (Sorry :S)


  • Automatic excerpt added in case the user didn't specifically write an excerpt.
  • Widget has been finally fixed. The attributes finally save themselves, and the widget works as expected :D


  • Small fix - added ul tags to default template.
  • Compatible WordPress 3.0 with Twenty Ten theme (thanks again Doug Joseph :) )



  • admin parameter now shows "display name" instead of "user nice name".
  • Template system has changed: In older version, custom templates got deleted if an automatic upgrade was done. Now templates are stored in the theme folder. (Thanks Paul Clark)
  • Added tag support


  • Fixed bug for 'content'.
  • There's new stuff on the widget options. I'm still working on it, so some bugs may appear.


  • Widget implements WP 2.8 Widget API, so at least 2.8 is required. Now you can use as many widgets as necessary, with new params.
  • Updated readme file.


  • Fixed link to category.
  • Improved template system.


  • Fixed uber stupid bug with offset... Sorry about that!


  • Exclude posts. Contribution by acub.
  • Offset parameter on shortcode to start listing posts with an offset. Contribution by Levi Vasquez
  • Content of the post can now be displayed. Contribution by Lang Zerner.
  • Link to the category available. By request on the plugin's forum.
  • Fixed small bug when using category name.


  • Minor fix for unclosed ul if not using templates.
  • Added option to list posts from many categories at once.
  • Added option to exclude categories.


  • Readme.txt validation.
  • Added 'excerpt' parameter. You can now show the excerpt for each post.
  • Added 'dateformat' parameter. Format of the date output. Default is get_option('date_format') - by Verex
  • Added 'template' parameter. Now you can choose template for output of the plugin. File name of template from templates directory without extension. Example: For 'template.php' value is only 'template'. Default is 'default' that means template in code of plugin not in template file -by Verex


  • Fixed some code to enable PHP 4 compatibility. Shouldn't hosting services update to PHP 5?


  • Added 'date' parameter. Now you can show the post's date when listed.
  • Added 'author' parameter. You can also show the post's author.
  • Sidebar Widget now allows you to add a title in h2 tags.
  • Changed some variable names, to keep better compatibility with other plugins/wordpress variables.
  • Tested with WordPress 2.7.


  • Broke backwards compatibility. Users of version 0.1 should update their pages and posts for the new shortcode formatting.
  • Option to pass arguments to the plugin, in order to use name of category instead of ID, orderby, order and number of posts are passed through parameters.


  • Added experimental sidebar widget (use at your own risk, not ready for prime-time yet since it hasn't been tested :P )


  • Fixed major bug, which gave 404 error when trying to use "Options" page.


  • Option page to limit number of posts.
  • Working using [category=ID] for posts and pages, with several categories support.

Requires: 3.3 or higher
Compatible up to: 4.7.1
Last Updated: 3 weeks ago
Active Installs: 100,000+


4.7 out of 5 stars


0 of 22 support threads in the last two months have been marked resolved.

Got something to say? Need help?


Not enough data

0 people say it works.
0 people say it's broken.

100,2,2 100,1,1
100,3,3 100,1,1
63,8,5 0,1,0 0,1,0
75,4,3 13,8,1 100,1,1 100,3,3
60,10,6 100,1,1 100,11,11
50,2,1 72,18,13
50,2,1 100,6,6 100,1,1 100,1,1 100,1,1 100,2,2
100,3,3 77,26,20 67,6,4 67,3,2 50,2,1
100,2,2 100,1,1 100,2,2
100,1,1 33,3,1
100,1,1 100,1,1 100,1,1 100,1,1 100,1,1 53,15,8
100,4,4 100,1,1
75,4,3 100,1,1
70,20,14 100,2,2 50,4,2 67,3,2 25,4,1 100,1,1 100,4,4 100,2,2 100,1,1 0,1,0 100,9,9 100,2,2 0,1,0 100,1,1
100,1,1 50,2,1 100,1,1 100,4,4 100,2,2
86,7,6 100,1,1 100,5,5 90,21,19 83,6,5
86,21,18 100,1,1
87,15,13 100,2,2 100,1,1
50,4,2 100,1,1 100,4,4 100,1,1 100,3,3 100,2,2 100,2,2
100,2,2 100,3,3 100,1,1 92,13,12 100,2,2 100,12,12
100,4,4 100,3,3 100,1,1 100,3,3 100,1,1
100,1,1 100,1,1
100,1,1 25,4,1 50,2,1 100,3,3 100,3,3 100,5,5 100,3,3 100,2,2 100,3,3 100,1,1 100,1,1
100,2,2 100,1,1 100,2,2 100,2,2 100,3,3 100,2,2 0,1,0 100,1,1
100,2,2 50,2,1 100,1,1 100,2,2 80,5,4 50,2,1 100,2,2 100,1,1 100,5,5
100,4,4 100,2,2 100,3,3 100,1,1 50,2,1 100,2,2
67,3,2 100,2,2
100,7,7 0,1,0
67,3,2 100,2,2 100,2,2 100,1,1 50,2,1 75,4,3 100,2,2 100,1,1
100,3,3 100,2,2 67,3,2 100,1,1 50,2,1
0,3,0 100,7,7 100,6,6
100,1,1 100,1,1 67,3,2 100,1,1
100,1,1 83,6,5 25,4,1 100,3,3
71,7,5 100,2,2
100,2,2 100,3,3
0,1,0 100,1,1
100,1,1 100,2,2
100,3,3 100,1,1