2016-03-16 3 views
1

Я создал пользовательскую панель для добавления текстовых виджетах.wordpress как настроить имя виджета?

function register_child_widgets() { 
    register_sidebar(array(
     'name' => 'Social Media (Follow)', 
     'id' => 'sidebar-follow', 
     'description' => __('Widgets in this area will be shown on all posts and pages.', 'theme-slug'), 
     'before_widget' => '', 
     'after_widget' => '', 
     'before_title' => '', 
     'after_title' => '', 
    )); 
    register_widget('Follow_Text_Widget'); 
} 
add_action('widgets_init', 'register_child_widgets'); 

class Follow_Text_Widget extends WP_Widget_Text { 
    function widget($args, $instance) { 
     extract($args); 
     $title = apply_filters('widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base); 
     $text = apply_filters('widget_text', empty($instance['text']) ? '' : $instance['text'], $instance); 
     echo $before_widget; 
     if (!empty($title)) { echo $before_title . $after_title; } ?> 
      <?php echo !empty($instance['filter']) ? wpautop($text) : $text; ?> 
     <?php 
     echo $after_widget; 
    } 
} 

Тогда у меня есть проблемы, когда я использую Vantage тему:

enter image description here

Как я могу настроить имя моего текстового виджета, скажем MYTEXT? Является ли это возможным?

ответ

1

Необходимо добавить это в свой класс.

/** 
    * Register widget with WordPress. 
    */ 
    function __construct() { 
    parent::__construct(
     'mytext', // Base ID 
     __('MyText', 'text_domain'), // Name 
     array('description' => __('MyText description', 'text_domain'),) // Args 
    ); 
    } 

Я вижу, что вы используете WP_Widget_Text, поэтому конструктор не работает.

Вы должны поместить конструктор в класс, который расширяет WP_Widget.

например.

/** 
* Adds MyText widget. 
*/ 
class MyText_Widget extends WP_Widget { 

    /** 
    * Register widget with WordPress. 
    */ 
    function __construct() { 
    parent::__construct(
     'mytext', // Base ID 
     __('MyText', 'text_domain'), // Name 
     array('description' => __('MyText description', 'text_domain'),) // Args 
    ); 
    } 

} 

Source

+0

спасибо, но не работает .... он по-прежнему отображается как текст вместо MyText. – laukok

+0

@teelou hmm weird, также это не изменило описание? –

+0

Да, нет. ничего не изменилось ... – laukok

1

Постарайся только передавая функцию конструктов в классе, он должен создать виджет именование «List Похожие страницы»

class Follow_Text_Widget extends WP_Widget_Text { 
function __construct() { 

    parent::__construct(

     // base ID of the widget 
     'tutsplus_list_pages_widget', 

     // name of the widget 
     __('List Related Pages', 'tutsplus'), 

     // widget options 
     array (
      'description' => __('Identifies where the current page is in the site structure and displays a list of pages in the same section of the site. Only works on Pages.', 'tutsplus') 
     ) 

    ); 

} 
} 

и удалить другие функции внутри класса. Чтобы вы могли определить, изменилось ли имя, проблема в других функциях

+0

спасибо за ответ. Я думаю, нам нужно создать новый текстовый виджет вместо расширения WP_Widget_Text, потому что WP_Widget_Text не требует никакой инъекции зависимостей. поэтому мы не можем выполнять 'function __construct() {...', если мы его расширяем. – laukok

Смежные вопросы