{"id":11419,"date":"2010-12-07T13:56:59","date_gmt":"2010-12-07T13:56:59","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/jquery-categories-list\/"},"modified":"2026-04-03T20:48:11","modified_gmt":"2026-04-03T20:48:11","slug":"jquery-categories-list","status":"publish","type":"plugin","link":"https:\/\/azb.wordpress.org\/plugins\/jquery-categories-list\/","author":276310,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"4.1.1","stable_tag":"4.1.1","tested":"7.0","requires":"6.1","requires_php":"7.0","requires_plugins":null,"header_name":"JS Categories List Block","header_author":"Miguel Angel Useche Castro","header_description":"","assets_banners_color":"494c48","last_updated":"2026-04-03 20:48:11","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/skatox.com\/blog\/jquery-categories-list-widget\/","header_plugin_uri":"https:\/\/skatox.com\/blog\/jquery-categories-list-widget\/","header_author_uri":"https:\/\/migueluseche.com\/","rating":4.8,"author_block_rating":0,"active_installs":1000,"downloads":74558,"num_ratings":16,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0":{"tag":"2.0","author":"skatox","date":"2013-04-11 12:59:20"},"2.1":{"tag":"2.1","author":"skatox","date":"2013-04-19 16:20:07"},"2.2":{"tag":"2.2","author":"skatox","date":"2013-08-18 18:04:21"},"2.2.1":{"tag":"2.2.1","author":"skatox","date":"2014-01-01 15:56:44"},"2.2.2":{"tag":"2.2.2","author":"skatox","date":"2014-01-07 14:44:08"},"2.2.3":{"tag":"2.2.3","author":"skatox","date":"2014-01-11 12:32:56"},"2.2.4":{"tag":"2.2.4","author":"skatox","date":"2015-09-13 19:33:29"},"2.2.5":{"tag":"2.2.5","author":"skatox","date":"2015-12-23 03:31:28"},"4.0.0":{"tag":"4.0.0","author":"skatox","date":"2023-06-04 00:10:48"},"4.0.1":{"tag":"4.0.1","author":"skatox","date":"2024-06-04 00:33:50"},"4.0.2":{"tag":"4.0.2","author":"skatox","date":"2025-08-07 23:11:32"},"4.0.3":{"tag":"4.0.3","author":"skatox","date":"2026-01-12 20:32:40"},"4.1.0":{"tag":"4.1.0","author":"skatox","date":"2026-03-24 00:26:23"},"4.1.1":{"tag":"4.1.1","author":"skatox","date":"2026-04-03 20:48:11"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":"3","5":"13"},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":2921024,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":2921024,"resolution":"256x256","location":"assets","locale":""},"icon.svg":{"filename":"icon.svg","revision":2921024,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":2921024,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":{"jquery-categories-list\/categories-block":{"$schema":"https:\/\/json.schemastore.org\/block.json","apiVersion":2,"name":"jquery-categories-list\/categories-block","version":"4.1.1","title":"JS Category List","category":"widgets","icon":"list-view","description":"A block for displaying a category list with some effects.","textdomain":"jquery-categories-list","editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","viewScript":"file:view.js","style":"file:.\/style-index.css","supports":{"multiple":true},"attributes":{"title":{"type":"string","default":""},"symbol":{"type":"string","enum":["0","1","2","3"],"default":"0"},"effect":{"type":"string","enum":["none","slide","fade"],"default":"none"},"layout":{"type":"string","enum":["left","right"],"default":"left"},"orderby":{"type":"string","enum":["count","id","name","slug"],"default":"name"},"orderdir":{"type":"string","enum":["ASC","DESC"]},"expand":{"type":"string","enum":["","all","sel_cat"],"default":""},"showcount":{"type":"boolean","default":false},"show_empty":{"type":"boolean","default":false},"open_in_new_page":{"type":"boolean","default":false},"include_or_exclude":{"type":"string","enum":["exclude","include"],"default":"include"},"categories":{"type":"array"},"post_type":{"type":"string","default":"post"},"taxonomy":{"type":"string","default":"category"}}}},"tagged_versions":["2.0","2.1","2.2","2.2.1","2.2.2","2.2.3","2.2.4","2.2.5","4.0.0","4.0.1","4.0.2","4.0.3","4.1.0","4.1.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3498490,"resolution":"1","location":"plugin"},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3498490,"resolution":"2","location":"plugin"},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3498490,"resolution":"3","location":"plugin"}},"screenshots":{"1":"Here you can see a list of categories, those with sub-categories will habe a link on the right to expand its childs.","2":"Here you can see a list of categories and its sub-categories expanded."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1220,610,148076,229,162],"plugin_category":[43,57,59],"plugin_contributors":[79602],"plugin_business_model":[],"class_list":["post-11419","plugin","type-plugin","status-publish","hentry","plugin_tags-block","plugin_tags-categories","plugin_tags-gutenberg","plugin_tags-javascript","plugin_tags-widget","plugin_category-customization","plugin_category-taxonomy","plugin_category-utilities-and-tools","plugin_contributors-skatox","plugin_committers-skatox"],"banners":{"banner":"https:\/\/ps.w.org\/jquery-categories-list\/assets\/banner-772x250.jpg?rev=2921024","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/jquery-categories-list\/assets\/icon.svg?rev=2921024","icon":"https:\/\/ps.w.org\/jquery-categories-list\/assets\/icon.svg?rev=2921024","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/jquery-categories-list\/trunk\/screenshot-1.png?rev=3498490","caption":"Here you can see a list of categories, those with sub-categories will habe a link on the right to expand its childs."},{"src":"https:\/\/ps.w.org\/jquery-categories-list\/trunk\/screenshot-2.png?rev=3498490","caption":"Here you can see a list of categories and its sub-categories expanded."},{"src":"https:\/\/ps.w.org\/jquery-categories-list\/trunk\/screenshot-3.png?rev=3498490","caption":""}],"raw_content":"<!--section=description-->\n<p>This plugin provides a widget and a filter to display a collapsible list of categories in your sidebar or posts by using vanilla Javascript.<\/p>\n\n<h4>Features<\/h4>\n\n<ol>\n<li>Support for Gutenberg blocks. Add it to any FSE theme or Gutenberg compatible theme.<\/li>\n<li>Display a collapsed list of your archives to reduce space.<\/li>\n<li>Uses vanilla JS to add effects and to be compatible with all browsers.<\/li>\n<li>Select the symbol for expanding\/collapsing categories<\/li>\n<li>Select categories to exclude, so it shows only the categories you want.<\/li>\n<li>Autoexpand selected category (including it parent or child).<\/li>\n<li>Support for multiple instances.<\/li>\n<li>Simple layout configuration<\/li>\n<li>Shortcode support  <em>[JsCategoriesList]<\/em><\/li>\n<li>Translated to Spanish, Italian Russian, Slovak, Czech.<\/li>\n<li>Compatible with most JS cache and minify plugins.<\/li>\n<li>And more to come...<\/li>\n<\/ol>\n\n<h3>Configuration<\/h3>\n\n<ul>\n<li>Title: title of the widget.<\/li>\n<li>Trigger Symbol:  characters to be displayed as a bullet.<\/li>\n<li>Symbol position: where to put the expand\/collapse symbol.<\/li>\n<li>Effect: JS's effect to use.<\/li>\n<li>Order by: display order of categories.<\/li>\n<li>Expand: if list should be expanded or callapsed by default.<\/li>\n<li>Show number of posts: display how many post are published in the category.<\/li>\n<li>Show empty categories: display categories with no posts.<\/li>\n<li>Open links in a new page: render category links with target=\"_blank\".<\/li>\n<li>Categories to include: categories to be included from the list.<\/li>\n<li>Categories to exclude: categories to be excluded from the list.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Make a directory <code>jquery-categories-list<\/code> under <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Upload  all downloaded files to <code>\/wp-content\/plugins\/jquery-categories-list\/<\/code><\/li>\n<li>Activate plugin at the plugins section.<\/li>\n<li>Go to Presentation -&gt; Widgets and drag the JS Categories List to your sidebar and configure it, if you want to display it inside a post then write [JsCategoriesList] at the location where it will be shown and save it.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"why%20there%20are%202%20widgets%3F\"><h3>Why there are 2 widgets?<\/h3><\/dt>\n<dd><p>Since version 4.0 the widget was migrated to a Gutenberg block. So there will be a Gutenberg block with the most modern code and compatibility and a legacy version that is 100% made in PHP to keep compatibility with older installations.<\/p><\/dd>\n<dt id=\"why%20this%20plugin%20is%20not%20working%3F\"><h3>Why this plugin is not working?<\/h3><\/dt>\n<dd><p>By support experience, like 99% of problems are due to:<\/p>\n\n<ul>\n<li>There's a Javascript error caused by other plugin and it stops any further code execution, check your browser's logs to find the problem and deactivate the conflict plugin.<\/li>\n<li>Your template doesn't have a wp_footer() function, this plugin requires this function to load JS code at the end of the website to improve speed.<\/li>\n<li>You're using a plugin that removes Wordpress' JS version and inserts an old one.<\/li>\n<\/ul><\/dd>\n<dt id=\"how%20i%20can%20send%20you%20a%20translation%3F\"><h3>How I can send you a translation?<\/h3><\/dt>\n<dd><p>Send me the translated .mo file to migueluseche(a)skatox.com and indicate the language, I can read english or spanish, so please write me on these languages.<\/p><\/dd>\n<dt id=\"can%20i%20use%20images%20as%20bullets%20or%20trigger%20symbols%3F\"><h3>Can I use images as bullets or trigger symbols?<\/h3><\/dt>\n<dd><p>Yes, select 'Empty Space' as trigger symbol and Save, then you can add any custom background using CSS,\njust play with the widget's classes .jaw_category, .jcl_symbol, .jcl_link.<\/p><\/dd>\n<dt id=\"can%20i%20show%20this%20list%20inside%20posts%3F\"><h3>Can I show this list inside posts?<\/h3><\/dt>\n<dd><p>Yes, only write [jQueryCategoriesList] anywhere inside a post or page's contest and it will be\nreplaced for the archive list when rendering the content.  You can add the following parameters to change its behavior:<\/p>\n\n<ol>\n<li><strong>showcount<\/strong> ( boolean ): Select if you want to show the count post inside category's name<\/li>\n<li><strong>'layout'<\/strong> ( \"right\", \"left\" ): where to display the symbol<\/li>\n<li><strong>ex_sym<\/strong>: the expansion symbol.<\/li>\n<li><strong>con_sym<\/strong>: the collapse symbol.<\/li>\n<li><strong>effect<\/strong> (\"none\", \"slide\", \"fade\"): the JS effect to implement.<\/li>\n<li><strong>orderby<\/strong> (\"name\",\"id\", \"count\"): how to order categories.<\/li>\n<li><strong>orderdir<\/strong> (\"ASC\", \"DESC\"): the direction to order categories.<\/li>\n<li><strong>show_empty'<\/strong> ( boolean ): show categories with no posts.<\/li>\n<li><strong>expand<\/strong> (\"all\", \"none\"): expand or collapase all categories.<\/li>\n<li><strong>exclude<\/strong>: IDs (comma separated) of the categories to exclude.<\/li>\n<\/ol><\/dd>\n<dt id=\"how%20can%20i%20add%20multiples%20instances%3F\"><h3>How can i add multiples instances?<\/h3><\/dt>\n<dd><p>Since 2.0 you can add as many instances as you want, but there's another way to do it, just add a new Text widget only with the shortcode [jQueryCategoriesList] then it will have a new copy of the widget.<\/p><\/dd>\n<dt id=\"how%20i%20contribute%20to%20this%20plugin%3F\"><h3>How I contribute to this plugin?<\/h3><\/dt>\n<dd><p>By using it, recommending it to other users, giving it 5 starts at plugin's wordpress page, suggesting features or coding new features and finally by <strong>DONATING<\/strong> using plugin's website's donate link,\nwith the donation I can spend more time on this project.<\/p><\/dd>\n<dt id=\"can%20i%20have%20different%20instances%20with%20different%20configuration%3F\"><h3>Can I have different instances with different configuration?<\/h3><\/dt>\n<dd><p>Since 2.0 it's possible. Each instance has its own configuration. Shortcode widgets are controlled by shortcode attributes.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>4.1.1<\/h4>\n\n<ul>\n<li>Added a post type selector in the block editor to switch between posts and custom post types registered with the default Categories taxonomy.<\/li>\n<li>Added REST support to load category options and frontend category trees by selected post type.<\/li>\n<li>Updated category picker behavior to refresh category options when changing the selected post type.<\/li>\n<li>Added a new block setting to open category links in a new page (<code>target=\"_blank\"<\/code>).<\/li>\n<li>Added backward-compatible post type fallback to <code>post<\/code> when older block instances do not have <code>post_type<\/code> saved.<\/li>\n<\/ul>\n\n<h4>4.1.0<\/h4>\n\n<ul>\n<li>Standardized the plugin text domain to <code>jquery-categories-list<\/code> across PHP, block metadata, JavaScript, and bundled translation files for better WordPress.org compatibility.<\/li>\n<li>Improved legacy widget, block, and REST code to better follow WordPress coding standards, sanitization, escaping, and inline documentation practices.<\/li>\n<li>Added the remaining editor translation string and wired block script translations through the generated editor asset handle.<\/li>\n<li>Hardened shortcode category parsing so user-provided <code>exclude<\/code> values are treated strictly as ID lists and are never unserialized, while keeping backward compatibility for stored serialized widget values.<\/li>\n<\/ul>\n\n<h4>4.0.3<\/h4>\n\n<ul>\n<li>Escaped category names\/links\/counts in the legacy frontend output, fixed\nactive child detection, and made exclude parsing safe with unserialize(...,\n['allowed_classes' =&gt; false]) + wp_parse_id_list in classes\/legacy\/class-\njcl-legacy-html-builder.php.<\/li>\n<li>Added spaces between data-* attributes, escaped admin form values\/IDs\/names,\nsanitized stored exclude lists, and safely deserialized excludes in classes\/\nlegacy\/class-jcl-legacy-widget.php.<\/li>\n<li>Validated REST params (orderby, orderdir, parent, cats) and normalized them\nto safe values in classes\/class-js-categories-list-rest-endpoints.php.<\/li>\n<\/ul>\n\n<h4>4.0.2<\/h4>\n\n<ul>\n<li>Improve compatibility with WordPress standards<\/li>\n<\/ul>\n\n<h4>4.0.1<\/h4>\n\n<ul>\n<li>Added support for WordPress Playground.<\/li>\n<li>Updating tests to the latest react-testing-library version.<\/li>\n<li>Updating JS dependencies to latest version. This will fix security issues and improve performance.<\/li>\n<li>Legacy version: added <code>jcl_widget_title<\/code> hook to allow changing the widget's title (helpful for translations).<\/li>\n<\/ul>\n\n<h4>4.0.0<\/h4>\n\n<ul>\n<li>Code migrated to Gutenberg block. Now you can use this plugin as a Gutenberg block on any modern theme.<\/li>\n<li>The block version reads the categories dynamically. It saves bandwidth and reduces old DOM size on old sites.<\/li>\n<li>JS code is only loaded if there\u2019s a widget or block is added to page. No more always loading JS and CSS code.<\/li>\n<li>Deprecated old php version. It will only be on maintenance mode and new Gutenberg block will be supported.<\/li>\n<li>Improved automated tests and code, to make future versions easier to develop.<\/li>\n<\/ul>\n\n<h4>3.0<\/h4>\n\n<ul>\n<li>Solved accordion bug with Intenet Explorer 8<\/li>\n<\/ul>\n\n<h4>2.2.2<\/h4>\n\n<ul>\n<li>Solved expansion\/contraction bug when using sub-categories.<\/li>\n<li>Added support for HTTPS, now the plugin generates the correct link if HTTPS is being used, thanks to <strong>bridgetwes<\/strong> for the patch.<\/li>\n<li>Added ordering by category's slug.<\/li>\n<\/ul>\n\n<h4>2.2.1<\/h4>\n\n<ul>\n<li>Fixed the problem of a warning message being shown when a post had a single category.<\/li>\n<li>Added a CSS class to <strong>li<\/strong> elements with child categories.<\/li>\n<li>Improved category HTML generation code to make future modifications easier.<\/li>\n<\/ul>\n\n<h4>2.2.<\/h4>\n\n<ul>\n<li>Fixed category's post count when excluding some categories, now it uses the same algorithm as the standard WP widget.<\/li>\n<li>Finally the list expands to the opened\/click category! It remembers where you clicked! Just select the expand option to 'Clicked Category'.<\/li>\n<li>Wrapped post count (if activated) inside a <strong>span<\/strong> to apply CSS rules.<\/li>\n<li>Added a active class for current category.<\/li>\n<li>Fixed some spanish translations.<\/li>\n<li>Plugin translated to Russian by \u041c\u0430\u0442\u0432\u0435\u0435\u0432 \u0412\u0430\u043b\u0435\u0440\u0438\u0439.<\/li>\n<\/ul>\n\n<h4>2.1<\/h4>\n\n<ul>\n<li>Added option to exclude categories when using shortcodes, just add categorie's ID separated by commas in the exclude attribute.<\/li>\n<li>Solved bug of not including JS file when using a filter without any widget.<\/li>\n<li>Solved bug of not including JS in some WP installlations under Windows.<\/li>\n<\/ul>\n\n<h4>2.0<\/h4>\n\n<ul>\n<li>Huge update thanks to donations! If you upgrade to this version you'll NEED to configurate the widget AGAIN, due to architecture rewriting configuration may get lost.<\/li>\n<li>Added support for multiples instances, finally you can have as many widgets as you want without any hack :)<\/li>\n<li>Added support for dynamic widgets<\/li>\n<li>Added an option to not have any effect when expanding or collapsing.<\/li>\n<li>Added an option to select if you want the symbol on the left or on the right.<\/li>\n<li>Added an option to autoexpand all categories by default.<\/li>\n<li>Removed dynamic generation of the JS file, now you don't need write permissions on the folder.<\/li>\n<li>Rewroted JS code, now it is a single JS file for all instances, improved perfomance and compatible with all cache plugins.<\/li>\n<li>Updated translation files for Spanish, Czech, Slovak and Italian.<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>Fixed some several bugs, thanks to Marco Lizza who reviewed the code and fixed them. Plugin should be more stable and won't throw errors when display_errors is on.<\/li>\n<li>Added italian translation.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Added option to show or hide empty categories.<\/li>\n<li>Improved shortcode, now parameters accepts yes, no, 1, or 0 as input.<\/li>\n<\/ul>\n\n<h4>1.3<\/h4>\n\n<ul>\n<li>Improved Javascript code (please save again the configuration to take effect)<\/li>\n<li>Better shortcode\/filter support. now it has attributes for different behavior on instances. (There's no support for effect and symbol because it is managed through the JS filse )<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Fixing i18n bug due to new wordpress changes, now it loads your language (if it was translated) correctly.<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>JS code is not generated dynamically, now it is generated in a separated file. For better performance and to support any minify plugins.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Improved generated HTML code to be more compatible when JS is off, also helps to search engines to navigate through archives pages.<\/li>\n<li>Added Slovak translation.<\/li>\n<li>Cleaned code and make it more readable for future hacks from developers.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Changed plugin's JS file loading to the footer, so it doesn't affect your site's loading speed.<\/li>\n<li>Added default value for widget's title. And it is included in translation files, so this can be used in multi-language sites.<\/li>\n<li>Plugin translated to Czech (CZ) thanks to Tomas Valenta.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Solving sorting bug, now you can choose the categories display order.<\/li>\n<\/ul>\n\n<h4>1.2<\/h4>\n\n<ul>\n<li>Added support for multiples instances (by writing [jQuery Categories List] on any Text widget).<\/li>\n<li>Fixed a bug when no categories were selected to be filtered.<\/li>\n<li>Improved compatibility with Wordpress 3.x.<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>Added support to exclude categories when listing.<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial public version.<\/li>\n<\/ul>","raw_excerpt":"A simple Gutenberg block and JS widget (can be called from posts) for displaying categories in a list with some effects.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/11419","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=11419"}],"author":[{"embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/skatox"}],"wp:attachment":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=11419"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=11419"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=11419"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=11419"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=11419"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=11419"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}