wordpress 元素或add_control获取data-id

vzgqcmou  于 2023-06-21  发布在  WordPress
关注(0)|答案(1)|浏览(127)

我创建了一个自定义的elementor小部件。我想在每次创建一个新的小部件时在render()函数中获取data-id。我如何才能做到这一点?
下面是render函数的代码:

protected function render() {
    global $wp_query;
    global $post;
    $this->print_unescaped_setting( 'custom_html' );
    $settings = $this->get_settings_for_display();

    $str = $settings['custom_php'];
    eval("$str");
    if(! empty ($settings['custom_function_php'] ) ){
        $str_php = $settings['custom_function_php'];
        //Get data-id
        $namepage = 'phpFile-' . get_the_ID() . '.php';
        $this->creat_file( $namepage, $str_php);
        require_once ( __DIR__ . '/' . $namepage );
    }   
}
cbjzeqam

cbjzeqam1#

在render()函数内部,你可以调用**get_id()**方法,例如我使用它来实现:

$map_id = 'map' . $this->get_id();
echo '<div id="' . $map_id . '"> here my Leaflet map </div>' ;

输出

<div id="map88efa82"> here my Leaflet map </div>

get_id()在其他有趣的方法中使用,你可以调用,在这里查看文件内部:elementor/includes/base/element-base.php
这是呈现类名。。

public function get_unique_selector() {
    return '.elementor-element-' . $this->get_id();
}

这是他们写data-id的地方...

protected function _add_render_attributes() {
    $id = $this->get_id();

    $this->add_render_attribute( '_wrapper', 'data-id', $id );

...这将返回一个数组,其中包含要分析的各种数据...

public function get_raw_data( $with_html_content = false ) {
    $data = $this->get_data();

    $elements = [];

    foreach ( $this->get_children() as $child ) {
        $elements[] = $child->get_raw_data( $with_html_content );
    }

    return [
        'id' => $this->get_id(),
        'elType' => $data['elType'],
        'settings' => $data['settings'],
        'elements' => $elements,
        'isInner' => $data['isInner'],
    ];
}

相关问题