Blog Listing 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 →Blog Listing
WriteAdds the The Plus "Blog Listing" widget (tp-blog-listout) 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_blog_listout_ability() reads the target post's Elementor page data, builds a widget element of type tp-blog-listout from the mapped input settings (layout, style, post query filters like category/tags/order, column counts, load-more/pagination behavior, title/excerpt/meta display toggles, button styling, layout direction, and many spacing/color/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-blog-listout widget to be registered, 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 Blog Listing widget to container blog-col on page 8 showing 6 posts in a 3-column grid layout with excerpt and read time enabled."
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 |
| style_pro_options | string | No | style_pro_options |
| layout | string | No | Layout |
| layout_pro_options | string | No | layout_pro_options |
| content_html | string | No | HTML |
| content_css | string | No | CSS |
| display_posts | string | No | Maximum Posts Display |
| post_offset | string | No | Offset Posts |
| post_category | string | No | Select Category (enum: multiple) |
| post_tags | string | No | Select Tags (enum: multiple) |
| post_order_by | string | No | post_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 |
| plus_pro_metro_column_options | string | No | plus_pro_metro_column_options |
| columns_gap | object | No | Columns Gap/Space Between (Dimensions Object) |
| post_extra_option | string | No | Post Loading Options |
| post_extra_pro_options | string | No | post_extra_pro_options |
| load_more_btn_text | string | No | Button Text |
| tp_loading_text | string | No | Loading Text |
| loaded_posts_text | string | No | All Posts Loaded Text |
| load_more_post | string | No | More posts on click/scroll |
| load_more_border | string | No | Load More Border (enum: yes, no) |
| load_more_border_style | string | No | Border Style |
| load_more_border_width | object | No | Border Width (Dimensions Object) |
| load_more_border_color | string | No | Border Color (Color Hex/RGBA) |
| load_more_border_radius | object | No | Border Radius (Dimensions Object) |
| load_more_border_hover_color | string | No | Border Color (Color Hex/RGBA) |
| load_more_border_hover_radius | object | No | Border Radius (Dimensions Object) |
| load_more_color | string | No | Text Color (Color Hex/RGBA) |
| loaded_posts_color | string | No | Loaded Posts Text Color (Color Hex/RGBA) |
| load_more_color_hover | string | No | Text Color (Color Hex/RGBA) |
| post_title_tag | string | No | Title Tag |
| display_title_limit | string | No | Title Limit (enum: yes, no) |
| display_title_by | string | No | Limit on (enum: char, display_title_limit, word) |
| display_title_input | string | No | Title Count |
| display_title_3_dots | string | No | Display Dots (enum: yes, no) |
| display_post_category | string | No | Display Category Post (enum: yes, no) |
| post_category_style | string | No | Style |
| display_post_category_all | string | No | Display All Category (enum: yes, no) |
| display_excerpt | string | No | Display Excerpt/Content (enum: yes, no) |
| post_excerpt_count | string | No | post_excerpt_count |
| show_post_date | string | No | Date & Time (enum: yes, no) |
| show_post_author | string | No | Author Name (enum: yes, no) |
| show_read_time | string | No | Read Time (enum: yes, no) |
| display_button | string | No | Button (enum: yes, no) |
| button_style | string | No | Button Style |
| button_text | string | No | Text |
| button_icon_style | string | No | Icon Font |
| button_icon | string | No | Icon |
| before_after | string | No | Icon Position |
| icon_spacing | object | No | Icon Spacing (Slider/Size Object) |
| display_thumbnail | string | No | display_thumbnail (enum: yes, no) |
| display_thumbnail_options | string | No | display_thumbnail_options |
| display_post_meta | string | No | Display Post Meta (enum: yes, no) |
| post_meta_tag_style | string | No | Post Meta Tag |
| author_prefix | string | No | Author Prefix |
| filter_category | string | No | filter_category (enum: yes, no) |
| filter_category_options | string | No | filter_category_options |
| tpae_theme_builder | string | No | tpae_theme_builder |
| post_meta_color | string | No | Post Meta Color (Color Hex/RGBA) |
| post_meta_color_hover | string | No | Post Meta Color (Color Hex/RGBA) |
| blog_card_layout | string | No | blog_card_layout (enum: yes, no) |
| wrap_flex_direction | object | No | Layout Direction |
| tp_row_one_width | object | No | Image Box (Slider/Size Object) |
| tp_row_two_width | object | No | Content Box (Slider/Size Object) |
| tp_content_alignment | object | No | Text Alignment |
| tp_item_content_alignment | object | No | Layout Alignment |
| wrap_gap | object | No | Item Gap (Slider/Size Object) |
| tp_absolute_layout | string | No | Layout Position (enum: yes, no) |
| tp_top_card | object | No | Left (Slider/Size Object) |
| tp_bottom_card | object | No | bottom (Slider/Size Object) |
| tp_width_card | object | No | Width (Slider/Size Object) |
| content_direction | object | No | Content Direction |
| content_vertical_justify | object | No | Vertical Alignment |
| blog_content_padding | object | No | Padding (Dimensions Object) |
| blog_content_margin | object | No | Margin (Dimensions Object) |
| blog_border_post | string | No | blog_border_post (enum: yes, no) |
| blog_content_border_radius | object | No | Border Radius (Dimensions Object) |
| blog_meta_layout_post | string | No | blog_meta_layout_post (enum: yes, no) |
| meta_flex_direction | string | No | Meta Direction |
| meta_align_items | object | No | Meta Align |
| meta_gap | object | No | Item Gap (Slider/Size Object) |
| tp_meta_inner_padding | object | No | Padding (Dimensions Object) |
| tp_meta_border_r | object | No | Border Radius (Dimensions Object) |
| date_overflow | string | No | Date Position (enum: yes, no) |
| category_date_inner_padding | object | No | Padding (Dimensions Object) |
| date_style_margin_tb | object | No | Top/Bottom Spacing (Slider/Size Object) |
| date_style_margin_lr | object | No | Left/Right Spacing (Slider/Size Object) |
| overflow_date_br | object | No | Border Radius (Dimensions Object) |
| meta_overflow | string | No | Author Position (enum: yes, no) |
| category_meta_inner_padding | object | No | Padding (Dimensions Object) |
| meta_style_margin_tb | object | No | Top/Bottom Spacing (Slider/Size Object) |
| meta_style_margin_lr | object | No | Left/Right Spacing (Slider/Size Object) |
| overflow_meta_br | object | No | Border Radius (Dimensions Object) |
| post_tima_overflow | string | No | Post Time Position (enum: yes, no) |
| category_post_time_inner_padding | object | No | Padding (Dimensions Object) |
| post_style_margin_tb | object | No | Top/Bottom Spacing (Slider/Size Object) |
| post_style_margin_lr | object | No | Left/Right Spacing (Slider/Size Object) |
| overflow_post_time_br | object | No | Border Radius (Dimensions Object) |
| button_overflow | string | No | Button Absolute (enum: yes, no) |
| button_style_margin_tb | object | No | Top/Bottom Spacing (Slider/Size Object) |
| button_style_margin_lr | object | No | Left/Right Spacing (Slider/Size Object) |
| blog_category_post | string | No | Category Post |
| category_style_margin_tb | object | No | Top/Bottom Spacing |
| category_style_margin_lr | object | No | Left/Right Spacing |
| category_inner_padding | object | No | Padding (Dimensions Object) |
| category_color | string | No | Color (Color Hex/RGBA) |
| category_hover_color | string | No | Color (Color Hex/RGBA) |
| category_2_border_hover_color | string | No | Hover Border Color (Color Hex/RGBA) |
| category_border | string | No | Border (enum: yes, no) |
| category_border_style | string | No | Border Style |
| box_category_border_width | object | No | Border Width (Dimensions Object) |
| category_border_color | string | No | Border Color (Color Hex/RGBA) |
| category_border_radius | object | No | Border Radius (Dimensions Object) |
| category_border_hover_color | string | No | Border Color (Color Hex/RGBA) |
| category_border_hover_radius | object | No | Border Radius (Dimensions Object) |
| s_title_pg | object | No | Padding (Dimensions Object) |
| title_margin | object | No | Margin (Dimensions Object) |
| title_color | string | No | Color (Color Hex/RGBA) |
| title_hover_color | string | No | Color (Color Hex/RGBA) |
| title_boxhover_color | string | No | Title Color (Color Hex/RGBA) |
| s_excerpt_content_pg | object | No | Padding (Dimensions Object) |
| excerpt_margin | object | No | Margin (Dimensions Object) |
| excerpt_color | string | No | Content Color (Color Hex/RGBA) |
| excerpt_hover_color | string | No | Content Color (Color Hex/RGBA) |
| blog_featured_image_width | object | No | Image width (Slider/Size Object) |
| blog_featured_image_height | object | No | Image Height |
| hover_image_style | string | No | Image Hover Effect |
| featured_image_radius | object | No | Border Radius (Dimensions Object) |
| tpae_enable_overlay | string | No | Enable Overlay (enum: yes, no) |
| tpae_overlay_color | string | No | Overlay Color (Color Hex/RGBA) |
| section_filter_category_styling_options | string | No | section_filter_category_styling_options |
| button_padding | object | No | Padding (Dimensions Object) |
| btn_text_color | string | No | Text Color (Color Hex/RGBA) |
| icon_fill_color | string | No | Fill (Color Hex/RGBA) |
| icon_stroke_color | string | No | Stroke (Color Hex/RGBA) |
| button_border_style | string | No | Border Style |
| button_border_width | object | No | Border Width (Dimensions Object) |
| button_border_color | string | No | Border Color (Color Hex/RGBA) |
| button_radius | object | No | Border Radius (Dimensions Object) |
| btn_text_hover_color | string | No | Text Color (Color Hex/RGBA) |
| icon_fill_color_hover | string | No | Fill (Color Hex/RGBA) |
| icon_stroke_color_hover | string | No | Stroke (Color Hex/RGBA) |
| button_border_hover_color | string | No | Hover Border Color (Color Hex/RGBA) |
| button_hover_radius | object | No | Hover Border Radius (Dimensions Object) |
| content_inner_padding | object | No | Padding (Dimensions Object) |
| box_border | string | No | Box Border (enum: yes, no) |
| border_style | string | No | Border Style |
| box_border_width | object | No | Border Width (Dimensions Object) |
| box_border_color | string | No | Border Color (Color Hex/RGBA) |
| border_radius | object | No | Border Radius (Dimensions Object) |
| box_border_hover_color | string | No | Border Color (Color Hex/RGBA) |
| border_hover_radius | object | No | Border Radius (Dimensions Object) |
| section_carousel_options_styling_options | string | No | section_carousel_options_styling_options |
| messy_column | string | No | Messy Columns (enum: yes, no) |
| messy_column_options | string | No | messy_column_options |
| animation_effects | string | No | Choose Animation Effect |
| animation_delay | object | No | Animation Delay (Slider/Size Object) |
| animated_column_list | string | No | List Load Animation |
| animation_stagger | object | No | Animation Stagger (Slider/Size Object) |
| animation_duration_default | string | No | Animation Duration (enum: yes, no) |
| animate_duration | object | No | Duration Speed (Slider/Size Object) |
| animation_out_effects | string | No | Out Animation Effect |
| animation_out_delay | object | No | Out Animation Delay (Slider/Size Object) |
| animation_out_duration_default | string | No | Out Animation Duration (enum: yes, no) |
| animation_out_duration | object | No | Duration Speed (Slider/Size Object) |
| settings | object | No | Raw Elementor control key/value pairs to merge. Supports multi-layout carousel physics, dynamic post-meta 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.