Category Posts in Custom Menu

Dynamic menus: This plugin automatically replaces selected Category links / Post Tag links / Custom Taxonomy links in a Custom Menu by a list of their

Author:Diana van de Laarschot (profile at
WordPress version required:5.4
WordPress version tested:6.4.4
Plugin version:3.0.1
Added to WordPress repository:08-11-2011
Last updated:10-06-2024
Rating, %:96
Rated by:43
Plugin URI:
Total downloads:92 305
Active installs:3 000+
plugin download
Click to start download

The default custom menu in WordPress only allows adding a link that leads to a list of posts and pages belonging to a taxonomy (category, tag, etc). If you want to list the posts and pages themselves and if you want WordPress to do this automatically for you, then I hope you will find this plugin useful.

Also works for custom taxonomies and custom post types
NEW: CPCM V3 now provides support for Full Site Editing with the Gutenberg Block Editor
WARNING: Coming from version 1.x? There are breaking changes, read the changelog before upgrading.

Using it

Enable the plugin and go to either Appearance > Menus or Appearance > Customize or Appearance > Editor. Add a category (or other taxonomy like tag or custom) to the menu. Next, you can choose if you would like to replace the category by the posts or pages themselves.

For each Category in your menu, you now have the following extra configuration options:

  • Replace by posts in the category y/n;
  • specify the (maximum) number of posts you want to show for this item (max 10);
  • their ordering ascending or descending by Title, Date or Menu Order;
  • specify the title for the menu items. For this you can use %post_title, %post_author and other wildcards, see ‘Other Notes > Wildcards’. Default value: %post_title


You can control the title of the menu items generated by the plug-in with the following wildcards:

  • %post_title
  • %post_author
  • %post_date for the unformatted post date: 2012-11-10 18:14:23
  • %post_date() for a formatted post date with the following default formatting: November 10th, 2012
  • %post_date(<your formatting here>) for custom date formatting. Example: %post_date(l jS \of F Y, h:i:s A). See for formatting options.
  • %post_date_gmt
  • %post_date_gmt()
  • %post_date_gmt(<your formatting here>)