Contents

Elementor Integration — Plugixa Testimonial

Plugixa Testimonial registers a native Elementor widget so you can drag-and-drop testimonials into any Elementor page, template, or theme builder layout. The widget is free — no Pro license required.

Requirements

  • Elementor 3.0.0 or higher.
  • Plugixa Testimonial (free or Pro).

The integration activates automatically when both plugins are active (via did_action('elementor/loaded')).

Elementor integration

Adding the widget

  1. Edit a page with Elementor.
  2. In the widget panel, search for Plugixa Testimonial (or scroll to the Plugixa category).
  3. Drag the widget onto the canvas.

Widget controls

The widget exposes the same options as the [plugixa_testimonials] shortcode, organized into Elementor-style control tabs.

Content tab

  • Config sourceSaved Shortcode or Custom.
  • Saved shortcode — SELECT2 dropdown (queries the shortcodes table) — used when source is Saved Shortcode.
  • View — SELECT2 dropdown (queries the views table) — used when source is Custom.
  • Categories — SELECT2 multi-select (queries the categories table).
  • Query controls — limit, order by, order, featured-only, min rating.
  • Display options (custom mode) — 7 SWITCHER controls: Show Photo, Rating, Role, Company, Date, Website, Quote Icon (all default on).

Style tab (custom mode only)

Elementor-native style controls that override the view per-widget-instance:

  • Card colors — background, text, name, role, border.
  • Star colors — active and inactive.
  • Spacing & borders — border radius, card padding, gap, border width.

These styles apply only to the specific widget instance — they don’t modify the underlying view.

Advanced tab

Standard Elementor advanced settings (margin, padding, responsive visibility, CSS classes, motion effects, custom CSS).

Rendering

The widget:

  1. Maps Elementor settings to shortcode attributes.
  2. Calls Shortcodes::render_testimonials() — the same renderer used by the shortcode and Gutenberg block.
  3. Adds an inline <script> to re-init window.PlugixaTestimonialApp.init() in Elementor preview mode (ensures Swiper / pagination / modals initialize on preview re-renders).

Theme builder integration

You can use the widget inside Elementor’s theme builder:

  • Single post template — add contextual testimonials to every blog post.
  • Product template — show product-specific testimonials (combine with the WooCommerce integration).
  • Archive template — add testimonials to category archives or custom post type archives.

Custom controls

Extend the widget’s control set via a hook:

add_action( 'plugixatestimonial_elementor_widget_controls', function( $widget ) {
    $widget->add_control(
        'my_custom_setting',
        [
            'label' => __( 'Custom setting', 'my-plugin' ),
            'type'  => \Elementor\Controls_Manager::TEXT,
        ]
    );
} );

Output customization

Transform the widget’s rendered HTML:

add_filter( 'plugixatestimonial_elementor_widget_render', function( $output, $settings ) {
    return $output . '<p class="disclaimer">Last updated: ' . current_time( 'Y-m-d' ) . '</p>';
}, 10, 2 );

Preview

Changes in the Elementor editor preview instantly — the widget re-renders on every setting change without a save-and-refresh cycle.

Assets

The widget enqueues the plugin’s frontend CSS and JS through Elementor’s asset system, so Elementor’s caching and minification work normally.

In preview mode (the Elementor editor), HMR / dev-time assets load if includes/admin/class-hmr.php exists; otherwise built assets load.

Multilingual

The widget respects WPML / Polylang automatically — testimonials in the current language are rendered. See Multilingual.

Troubleshooting

Widget not showing in Elementor

  • Elementor active? Plugins screen.
  • Clear Elementor cache: Elementor → Tools → Regenerate CSS & data.

Widget shows but no testimonials

Same causes as the shortcode — see Shortcodes → Troubleshooting.

Slider doesn’t work in the Elementor preview

The widget re-inits PlugixaTestimonialApp after render, but if Swiper fails to bind, check:

  • Browser console for JS errors.
  • Whether the Elementor preview iframe has loaded both frontend.css and Swiper assets (network tab).

Preview breaks after a plugin update

Elementor caches widget controls. After any plugin update that changes controls, hit Elementor → Tools → Regenerate CSS & data.

Hooks

See Hooks → Elementor.

Quick Links