我正在为elementor构建自定义窗口小部件,以帮助我的客户自己将项目添加到网站,而无需编码知识。当我遇到一个非常奇怪的问题时,我差点就完成了。我设置的一个链接到新页面的按钮由于某种原因而将文本“数组”放入其自身。
我尝试通过编辑html将文本直接放置在“数组”文本所在的位置。当我在wordpress上更新或进入预览模式时,此文本消失,并且再次出现“ 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
}
}
不知道是什么原因造成的。希望它有些愚蠢,可以轻松解决。
答案 0 :(得分:0)
利顿·阿雷芬(Liton Arefin)在我在wordpress堆栈交换中发表的有关同一问题的另一篇文章中找到了答案。这是修复程序的链接。 https://wordpress.stackexchange.com/a/348086/174997