Dynamic Categories is a WordPress ability from The Plus Addons for Elementor — usable via Easy MCP AI, which connects Claude, ChatGPT, and any AI assistant to your site.
Install Free Plugin →Dynamic Categories
WriteAdds the The Plus "Dynamic Categories" widget (tp-dynamic-categories) to an Elementor container.
Requires the The Plus Addons for Elementor plugin (which registers under the 'tpae' ability category) on WordPress 6.9+, with Elementor active. Every ability requires the current user to have the 'edit_posts' capability (and 'edit_post' for the specific post being modified); abilities that create or edit content also verify Elementor and, where relevant, the target The Plus widget are available. A subset of abilities (theme templates, template conditions, dynamic tags, popups, and some custom-code abilities) only register when Elementor Pro is active, and many widget abilities load only in the free plugin when the Pro add-on is inactive.
What it does
The execute_callback tpae_mcp_add_theplus_dynamic_categories_ability() reads the target post's Elementor page data, builds a widget element of type tp-dynamic-categories from the mapped input settings (style, layout, taxonomy selection, include/exclude terms, column counts, description/thumbnail display options, hover-content styling, and extensive color/border/animation controls), inserts it into the specified parent container at the requested position, and saves the updated Elementor data back to the post. It requires Elementor to be active and the tp-dynamic-categories widget to be registered on the site, and requires non-empty post_id and parent_id, with the target post existing.
See it in action
You ask your AI assistant
"Add a Dynamic Categories widget to container shop-cats on page 25 using a grid layout showing product category counts."
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| post_id | integer | Yes | Elementor page/post ID |
| parent_id | string | Yes | Target Elementor container ID |
| position | integer | No | Insert position. Use -1 to append. |
| style | string | No | Style (enum: columns, style_1, style_2, style_3) |
| layout | string | No | Layout (enum: carousel, columns, grid, masonry, metro) |
| layout_pro_options | string | No | layout_pro_options |
| post_taxonomies | string | No | Taxonomies |
| text_alignment_st1 | string | No | Alignment |
| text_alignment_st2 | string | No | Alignment |
| align_offset | string | No | Offset |
| hide_empty | string | No | Hide Empty (enum: yes, no) |
| hide_parent_cat | string | No | Hide Parent Categories (enum: yes, no) |
| hide_sub_cat | string | No | Hide Sub Categories (enum: yes, no) |
| post_category | string | No | Include Terms ID |
| post_category_exc | string | No | Exclude Terms ID |
| display_posts | string | No | Maximum Categories Display |
| post_offset | string | No | Offset Categories |
| post_order_by | string | No | Order By |
| post_order | string | No | Order |
| desktop_column | string | No | Desktop Column |
| tablet_column | string | No | Tablet Column |
| mobile_column | string | No | Mobile Column |
| metro_column | string | No | Metro Column (enum: 3, 4, 5, 6, layout) |
| metro_style_3 | string | No | Metro Style |
| columns_gap | object | No | Columns Gap/Space Between (Dimensions Object) |
| hide_pro_count | string | No | Display Product Count (enum: yes, no) |
| display_description | string | No | Display Description (enum: yes, no) |
| desc_text_limit | string | No | Display Description Limit (enum: yes, no) |
| display_description_by | string | No | Limit on |
| display_description_input | string | No | Description Count |
| display_title_3_dots | string | No | Display Dots (enum: yes, no) |
| display_thumbnail | string | No | Display Image Size (enum: yes, no) |
| on_hover_bg_image | string | No | On Hover Background Image (enum: yes, no) |
| tpae_theme_builder | string | No | tpae_theme_builder |
| title_color | string | No | Title Color (Color Hex/RGBA) |
| title_hover_color | string | No | Title Color (Color Hex/RGBA) |
| title_bg | string | No | Title Background (enum: yes, no) |
| title_bg_padding | object | No | Padding (Dimensions Object) |
| title_bg_border_radius | object | No | Border Radius (Dimensions Object) |
| title_bg_border_radius_h | object | No | Border Radius (Dimensions Object) |
| title_underline | string | No | Title Underline (enum: yes, no) |
| t_underline_top_offset | object | No | Top Offset (Slider/Size Object) |
| t_underline_height | object | No | Height (Slider/Size Object) |
| t_underline_size | object | No | Size (Slider/Size Object) |
| t_underline_color | string | No | Color (Color Hex/RGBA) |
| t_underline_size_h | object | No | Size (Slider/Size Object) |
| t_underline_color_h | string | No | Color (Color Hex/RGBA) |
| count_padding | object | No | Padding (Dimensions Object) |
| count_extra_text | string | No | Count After Text |
| count_width_height_opt | object | No | Width and Height (Slider/Size Object) |
| count_top_bottom | object | No | Top/Bottom Offset (Slider/Size Object) |
| count_left_right | object | No | Left/Right Offset (Slider/Size Object) |
| count_color | string | No | Count Color (Color Hex/RGBA) |
| count_opacity | string | No | Opacity |
| count_transform | string | No | Transform css |
| count_bg_switch | string | No | Background Option (enum: yes, no) |
| count_border_radius_n | object | No | Border Radius (Dimensions Object) |
| count_hover_color | string | No | Count Color (Color Hex/RGBA) |
| count_opacity_h | string | No | Opacity |
| count_transform_h | string | No | Transform css |
| count_border_h | string | No | Border Color (Color Hex/RGBA) |
| desc_margin | object | No | Margin (Dimensions Object) |
| description_alignment_st | string | No | Text Alignment |
| desc_color | string | No | Color (Color Hex/RGBA) |
| desc_opacity | string | No | Opacity |
| desc_color_h | string | No | Color (Color Hex/RGBA) |
| desc_opacity_h | string | No | Opacity |
| desc_bg | string | No | Description Background (enum: yes, no) |
| desc_bg_padding | object | No | Padding (Dimensions Object) |
| desc_bg_border_radius | object | No | Border Radius (Dimensions Object) |
| desc_bg_border_radius_h | object | No | Border Radius (Dimensions Object) |
| cl_st3_padding | object | No | Padding (Dimensions Object) |
| cl_st3_radius | object | No | Border Radius (Dimensions Object) |
| cl_st3_radius_h | object | No | Border Radius (Dimensions Object) |
| cl_bg_ol_color | string | No | Whole Overlay Color (Color Hex/RGBA) |
| cl_hover_content_swich | string | No | Hover Content Only (enum: yes, no) |
| cl_border_radius | object | No | Border Radius (Dimensions Object) |
| cl_border_radius_hc | object | No | Border Radius (Dimensions Object) |
| cl_transform | string | No | Transform css |
| cl_transform_m | string | No | Transform css |
| transition_duration | object | No | Transition Duration (Slider/Size Object) |
| transition_duration_m | object | No | Transition Duration (Slider/Size Object) |
| cl_bg_ol_color_h | string | No | Whole Overlay Color (Color Hex/RGBA) |
| cl_border_radius_h | object | No | Border Radius (Dimensions Object) |
| cl_border_radius_h_hc | object | No | Border Radius (Dimensions Object) |
| cl_transform_swich | string | No | With Content Transform (enum: yes, no) |
| cl_transform_h | string | No | Transform css |
| cl_transform_h_m | string | No | Transform css |
| cl_transform_h_all | string | No | Transform css |
| cl_transform_h_all_m | string | No | Transform css |
| cl_transform_h_all_hc | string | No | Transform css |
| cl_inner_switch | string | No | Inner Content Option (enum: yes, no) |
| cl_outer_padding | object | No | Outer Padding (Dimensions Object) |
| cl_inner_padding | object | No | Inner Padding (Dimensions Object) |
| cl_inner_bg_color | string | No | Background Color (Color Hex/RGBA) |
| cl_inner_h_bg_color | string | No | Hover Background Color (Color Hex/RGBA) |
| cl_inner_border_h | string | No | Hover Border Color (Color Hex/RGBA) |
| cl_inner_border_radius | object | No | Border Radius (Dimensions Object) |
| overflow_hidden_opt | string | No | Overflow |
| overflow_pro_options | string | No | overflow_pro_options |
| plus_mouse_move_parallax | string | No | Mouse Move Parallax (enum: yes, no) |
| plus_mouse_pro_options | string | No | plus_mouse_pro_options |
| messy_column | string | No | Messy Columns (enum: yes, no) |
| messy_pro_options | string | No | messy_pro_options |
| settings | object | No | Raw Elementor control key/value pairs to merge. Supports multi-taxonomy aggregation, dynamic post-count injection, and responsive grid geometry. |
Returns
Returns element_id (string), widget_type (string), and post_id (integer) of the created widget.
Permission
Requires the current user to have the edit_posts capability, and if a post_id is provided, also requires edit_post capability on that specific post.
More The Plus Addons for Elementor abilities
Accordion
Adds The Plus Addons "Accordion" widget (tp-accordion) to an Elementor container.
Add Code Snippet
Creates a site-wide Custom Code snippet using Elementor Pro, injecting CSS/JS/meta into the head or body on all pages.
Add Container
Adds a new Elementor flex container to a page or nests it inside another existing container.
Add Container
Adds a flex or grid container to a page, optionally nested inside a parent container.
Add Custom CSS
Adds custom CSS to a specific element or to the entire page (requires Elementor Pro).
Add Custom JavaScript
Adds a custom JavaScript snippet to a page by inserting an HTML widget containing a <script> tag; works with free Elementor.