{"id":240374,"date":"2025-07-12T10:22:24","date_gmt":"2025-07-12T10:22:24","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/dynamic-category-slug-filter\/"},"modified":"2025-07-12T10:22:11","modified_gmt":"2025-07-12T10:22:11","slug":"dynamic-category-slug-filter","status":"publish","type":"plugin","link":"https:\/\/haz.wordpress.org\/plugins\/dynamic-category-slug-filter\/","author":23321007,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0","stable_tag":"trunk","tested":"6.8.5","requires":"5.0","requires_php":"7.0","requires_plugins":null,"header_name":"Dynamic Category Slug Filter","header_author":"Tony Huynh","header_description":"Automatically generates filter buttons based on category slugs using the WordPress REST API. No PHP editing required. Multilingual support included.","assets_banners_color":"","last_updated":"2025-07-12 10:22:11","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":288,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":{"1.0":"<p>Initial version.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":[],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Example frontend filter using Vietnamese category names"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[37962,242417,229,99,23853],"plugin_category":[48],"plugin_contributors":[244847],"plugin_business_model":[],"class_list":["post-240374","plugin","type-plugin","status-publish","hentry","plugin_tags-category-filter","plugin_tags-dynamic-filter","plugin_tags-javascript","plugin_tags-multilingual","plugin_tags-rest-api","plugin_category-language-tools","plugin_contributors-thuynh91","plugin_committers-thuynh91"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/dynamic-category-slug-filter.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>This plugin dynamically generates category filter buttons using slugs declared in your HTML (e.g., in a Grid block). It fetches category names using the WordPress REST API, eliminating manual slug-to-name mapping.<\/p>\n\n<p>Features include:<\/p>\n\n<ul>\n<li>Auto filter display from data-cat-slug attribute<\/li>\n<li>Smart category name resolution via REST API<\/li>\n<li>Works with Betheme's .btCatFilter structure<\/li>\n<li>No PHP or theme file edits needed<\/li>\n<li>Supports multilingual category names<\/li>\n<\/ul>\n\n<h3>License<\/h3>\n\n<p>This plugin is licensed under GPLv2 or later.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the ZIP file via WordPress Admin \u2192 Plugins \u2192 Add New \u2192 Upload Plugin.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Edit your page or post with a Grid or blog section.<\/li>\n<li>Add the attribute <code>data-cat-slug=\"slug1,slug2\"<\/code> to the element.<\/li>\n<li>Ensure filter container uses <code>.btCatFilter<\/code> and items use <code>.btCatFilterItem<\/code>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='does%20it%20require%20jquery%3F'><h3>Does it require jQuery?<\/h3><\/dt>\n<dd><p>No. It uses vanilla JavaScript.<\/p><\/dd>\n<dt id='does%20it%20support%20multilingual%20websites%3F'><h3>Does it support multilingual websites?<\/h3><\/dt>\n<dd><p>Yes. It works with category names in any language.<\/p><\/dd>\n<dt id='can%20i%20use%20it%20with%20custom%20taxonomies%3F'><h3>Can I use it with custom taxonomies?<\/h3><\/dt>\n<dd><p>Yes, with minor tweaks to REST API endpoint logic.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Automatically generates filter buttons based on category slugs using the WordPress REST API. No PHP editing required. Multilingual support included.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/240374","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=240374"}],"author":[{"embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/thuynh91"}],"wp:attachment":[{"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=240374"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=240374"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=240374"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=240374"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=240374"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/haz.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=240374"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}