# betterdocs/2.5.5/includes/Editors/Elementor/BaseWidget.php

BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ &amp; Chatbot, version 2.5.5. 52 lines.

- Page: https://pluginprobe.com/plugins/betterdocs/2.5.5/code/includes/Editors/Elementor/BaseWidget.php
- Raw: https://pluginprobe.com/plugins/betterdocs/2.5.5/raw/includes/Editors/Elementor/BaseWidget.php
- Modified: 2023-08-14T08:41:14+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/betterdocs/2.5.5/code/includes/Editors/Elementor/BaseWidget.php#L10-L20`.

```php
<?php

namespace WPDeveloper\BetterDocs\Editors\Elementor;
use Elementor\Widget_Base;
use WPDeveloper\BetterDocs\Traits\EditorHelper;

/**
 * @method render_editor_script()
 */
abstract class BaseWidget extends Widget_Base {
    use EditorHelper;

    public function __construct( $data = [], $args = null ) {
        // $is_type_instance = $this->is_type_instance();
        // dump( $is_type_instance, $data, $args );

        // if( $is_type_instance && $args !== null ) {
        //     $data['settings']['nested_posts_per_page'] = 5;
        // }

		parent::__construct( $data, $args );

        // if( $is_type_instance && $args !== null ) {
        //     // $this->set_settings('nested_posts_per_page', 5);
        //     // $this->query = betterdocs()->query;
        // }
    }

    public function betterdocs_do_action(){
        /**
         * Query  Controls!
         * @source includes/elementor-helper.php
         */
        do_action( 'betterdocs/elementor/widgets/query', $this, 'doc_category' );
    }

    abstract protected function render_callback();

    protected function render(){
        $settings = $this->get_settings_for_display();
        $this->attributes = &$settings;

        $this->reset_attributes();

        do_action_ref_array( 'betterdocs_before_render', [ &$this, 'elementor' ] );

        $this->render_callback();

        do_action_ref_array( 'betterdocs_after_render', [ &$this, 'elementor' ] );
    }
}

```
