Php Elementor Wordpress插件随机添加单词;数组";到我的自定义小部件

Php Elementor Wordpress插件随机添加单词;数组";到我的自定义小部件,php,html,css,wordpress,elementor,Php,Html,Css,Wordpress,Elementor,我正在为elementor构建一个自定义小部件,以帮助我的客户自己向网站添加项目,而无需编码知识。当我遇到一个非常奇怪的问题时,我几乎完成了它。我设置了一个链接到新页面的按钮,出于某种原因,它将文本“array”放入自身 我试着通过编辑我的html将文本直接放入“数组”文本所在的位置。当我在wordpress上更新或进入预览模式时,该文本消失,单词“array”再次出现。我甚至在按钮上添加了一个字段,我的客户或我可以在其中添加我们自己的文本,试图解决这个问题,但现在文本前面只是“array” 之

我正在为elementor构建一个自定义小部件,以帮助我的客户自己向网站添加项目,而无需编码知识。当我遇到一个非常奇怪的问题时,我几乎完成了它。我设置了一个链接到新页面的按钮,出于某种原因,它将文本“array”放入自身

我试着通过编辑我的html将文本直接放入“数组”文本所在的位置。当我在wordpress上更新或进入预览模式时,该文本消失,单词“array”再次出现。我甚至在按钮上添加了一个字段,我的客户或我可以在其中添加我们自己的文本,试图解决这个问题,但现在文本前面只是“array”

之前:

之后:

我的所有相关代码都在awesomesauce.php文件中,小部件的代码位于该文件中

<?php
namespace ElementorAwesomesauce\Widgets;

use Elementor\Widget_Base;
use Elementor\Controls_Manager;

if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

/**
 * @since 1.1.0
 */
class Awesomesauce extends Widget_Base {

  /**
   * Retrieve the widget name.
   *
   * @since 1.1.0
   *
   * @access public
   *
   * @return string Widget name.
   */
  public function get_name() {
    return 'awesomesauce';
  }

  /**
   * Retrieve the widget title.
   *
   * @since 1.1.0
   *
   * @access public
   *
   * @return string Widget title.
   */
  public function get_title() {
    return __( 'Awesomesauce', 'elementor-awesomesauce' );
  }

  /**
   * Retrieve the widget icon.
   *
   * @since 1.1.0
   *
   * @access public
   *
   * @return string Widget icon.
   */
  public function get_icon() {
    return 'fa fa-pencil';
  }

  /**
   * Retrieve the list of categories the widget belongs to.
   *
   * Used to determine where to display the widget in the editor.
   *
   * Note that currently Elementor supports only one category.
   * When multiple categories passed, Elementor uses the first one.
   *
   * @since 1.1.0
   *
   * @access public
   *
   * @return array Widget categories.
   */
  public function get_categories() {
    return [ 'general' ];
  }

  /**
   * Register the widget controls.
   *
   * Adds different input fields to allow the user to change and customize the widget settings.
   *
   * @since 1.1.0
   *
   * @access protected
   */
  protected function _register_controls() {
    $this->start_controls_section(
      'section_content',
      [
        'label' => __( 'Content', 'elementor-awesomesauce' ),
      ]
    );

    $this->add_control(
      'title',
      [
        'label' => __( 'Title', 'elementor-awesomesauce' ),
        'type' => Controls_Manager::TEXT,
        'default' => __( 'Car Title', 'elementor-awesomesauce' ),
      ]
    );

    $this->add_control(
      'description',
      [
        'label' => __( 'Description', 'elementor-awesomesauce' ),
        'type' => Controls_Manager::TEXTAREA,
        'default' => __( 'Sold or Currently available', 'elementor-awesomesauce' ),
      ]
    );

    $this->add_control(
      'content',
      [
        'label' => __( 'Content', 'elementor-awesomesauce' ),
        'type' => Controls_Manager::WYSIWYG,
        'default' => __( 'Remove this text and insert media', 'elementor-awesomesauce' ),
      ]
    );

    $this->add_control(
            'link',
            [
                'label' => __( 'Link', 'elementor-awesomesauce' ),
                'type' => Controls_Manager::URL,
                'dynamic' => [
                    'active' => true,
                ],
                'placeholder' => __( 'https://your-link.com', 'elementor-awesomesauce' ),
                'default' => [
                    'url' => '#',
                ],

            ]
        );

    $this->add_control(
            'text',
            [
                'label' => __( 'Text', 'elementor' ),
                'type' => Controls_Manager::TEXT,
                'dynamic' => [
                    'active' => true,
                ],
                'default' => __( 'Click here', 'elementor' ),
                'placeholder' => __( 'Click here', 'elementor' ),
            ]
        );


    $this->end_controls_section();
  }

  /**
   * Render the widget output on the frontend.
   *
   * Written in PHP and used to generate the final HTML.
   *
   * @since 1.1.0
   *
   * @access protected
   */
  protected function render() {
    $settings = $this->get_settings_for_display();

    $this->add_inline_editing_attributes( 'title', 'none' );
    $this->add_inline_editing_attributes( 'description', 'basic' );
    $this->add_inline_editing_attributes( 'content', 'advanced' );
    $this->add_inline_editing_attributes( 'link', 'none');
    $this->add_inline_editing_attributes( 'text', 'basic');

    // Add render attributes to add classes to html elements h2, article, figure, and div

    $this->add_render_attribute( 'title', 'class', 'title is-5');
    $this->add_render_attribute( 'description', 'class', 'subtitle');
    $this->add_render_attribute( 'content', 'class', 'image is-4by3');
    $this->add_render_attribute( 'link', 'class', 'button is-rounded is-fullwidth');

    $this->add_render_attribute( 'wrapper', 'class', 'tile is-parent');
    $this->add_render_attribute( 'wrappertwo', 'class', 'tile is-child box');
    $this->add_render_attribute( 'text', 'class', 'subtitle has-text-right');

    ?>

    <div <?php echo $this->get_render_attribute_string( 'wrapper' ); ?>><?php echo $settings['wrapper']; ?>
      <div <?php echo $this->get_render_attribute_string( 'wrappertwo' ); ?>><?php echo $settings['wrappertwo']; ?>
        <h2 <?php echo $this->get_render_attribute_string( 'title' ); ?>><?php echo $settings['title']; ?></h2>
        <div <?php echo $this->get_render_attribute_string( 'description' ); ?>><?php echo $settings['description']; ?></div>
        <div <?php echo $this->get_render_attribute_string( 'content' ); ?>><?php echo $settings['content']; ?></div>
        <div <?php echo $this->get_render_attribute_string( 'link' ); ?>><?php echo $settings['link']; ?>
          <div <?php echo $this->get_render_attribute_string( 'text'); ?>><?php echo $settings['text']; ?></div>
        </div>
      </div>

    </div>


    <?php
  }

  /**
   * Render the widget output in the editor.
   *
   * Written as a Backbone JavaScript template and used to generate the live preview.
   *
   * @since 1.1.0
   *
   * @access protected
   */
  protected function _content_template() {
    ?>
    <#
    view.addInlineEditingAttributes( 'title', 'none' );
    view.addInlineEditingAttributes( 'description', 'basic' );
    view.addInlineEditingAttributes( 'content', 'advanced' );
    view.addInlineEditingAttributes( 'car_image', 'advanced');
    #>
    <div ' + view.getRenderAttributeString( 'wrapper' ) + ' >
      <article ' + view.getRenderAttributeString( 'wrappertwo' ) + ' >
        <h2 class="title is-5" {{{ view.getRenderAttributeString( 'title' ) }}}>{{{ settings.title }}}</h2>
        <div class="subtitle" {{{ view.getRenderAttributeString( 'description' ) }}}>{{{ settings.description }}}</div>
        <figure class="image is-4by3" {{{ view.getRenderAttributeString( 'content' ) }}}>{{{ settings.content }}}</figure>
            <a href="{{ settings.link.url }}" class="button is-rounded is-fullwidth">
              <span {{{ view.getRenderAttributeString( 'text' ) }}}>{{{ settings.text }}}</span>
            </a>
      </article>
    </div>
    <?php
  }
}


>
>
>
>
>
>
>

利顿·阿雷芬(Liton Arefin)在我在wordpress stack exchange上发表的另一篇关于同一个问题的帖子中找到了答案。这里有一个到修复程序的链接。