2015-04-19 2 views
0

Я пытаюсь создать простой виджет для отображения списка сообщений из определенной категории, я получаю журнал ошибок в "Notice: Undefined index: after_widget in"
Я также заметил странную вещь, что мой класс виджета <aside> делает все другие виджеты быть ее ребенок, она не закрывается, когда код виджета делается,Фатальная ошибка с after_widget

Это мой код:

if (!defined('ABSPATH')) 
 
\t die('-1'); 
 
\t 
 
\t 
 
add_action('widgets_init', function(){ 
 
    register_widget('news_roller'); 
 
}); \t 
 

 
function illu_news_widget(){ 
 

 
     wp_enqueue_style('your-stylesheet-name', plugins_url('/css/style.css', __FILE__), false, '1.0.0', 'all'); 
 
    } 
 
    add_action('wp_enqueue_scripts', "illu_news_widget"); 
 

 
/** 
 
* Adds news_roller widget. 
 
*/ 
 
class news_roller extends WP_Widget { 
 

 
\t /** 
 
\t * Register widget with WordPress. 
 
\t */ 
 
\t function __construct() { 
 
\t \t parent::__construct(
 
\t \t \t 'news_roller', // Base ID 
 
\t \t \t __('News roller', 'isas_news'), // Name 
 
\t \t \t array('description' => __('News roller', 'isas_news'),) // Args 
 
\t \t); 
 
\t } 
 

 
\t /** 
 
\t * Front-end display of widget. 
 
\t * 
 
\t * @see WP_Widget::widget() 
 
\t * 
 
\t * @param array $args  Widget arguments. 
 
\t * @param array $instance Saved values from database. 
 
\t */ 
 
\t public function widget($args, $instance) { 
 

 
\t \t extract($args); 
 

 
\t \t // Excerpt length filter 
 
\t \t function new_excerpt_length($length) { 
 
    \t return 10; 
 
\t \t } 
 
\t \t add_filter('excerpt_length', 'new_excerpt_length'); 
 
\t 
 
     \t echo $args['before_widget']; 
 

 
\t \t if (! empty($instance['title'])) { 
 
\t \t \t echo $args['before_title'] . apply_filters('widget_title', $instance['title']). $args['after_title']; 
 
\t \t } 
 
     if (! empty($instance['cat'])) { 
 
\t \t ?> 
 

 
\t \t \t \t \t \t \t <ul class="illu_widget news-carousel"> 
 
\t \t \t \t \t \t \t \t <?php 
 
\t \t \t \t \t \t \t \t \t $args = array(
 
\t \t \t \t \t \t \t \t \t \t 'cat' => $instance["cat"] 
 
\t \t \t \t \t \t \t \t \t); 
 
\t \t \t \t \t \t \t \t \t query_posts($args); 
 
\t \t \t \t \t \t \t \t \t while (have_posts()) : the_post(); 
 
\t \t \t \t \t \t \t \t ?> 
 
\t \t \t \t \t \t \t \t \t <li> 
 
\t \t \t \t \t \t \t \t \t \t <a href="<?php the_permalink(); ?>"> 
 
\t \t \t \t \t \t \t \t \t \t \t <?php the_excerpt(); ?> 
 
\t \t \t \t \t \t \t \t \t \t </a> 
 
\t \t \t \t \t \t \t \t \t </li> 
 
\t \t \t \t \t \t \t \t <?php 
 
\t \t \t \t \t \t \t \t \t endwhile; 
 
\t \t \t \t \t \t \t \t \t wp_reset_query(); 
 
\t \t \t \t \t \t \t \t ?> 
 
\t \t \t \t \t \t \t </ul> 
 
\t <?php 
 
\t 
 
\t } 
 

 
\t echo $args['after_widget']; 
 
\t \t 
 
\t } 
 

 
\t /** 
 
\t * Back-end widget form. 
 
\t * 
 
\t * @see WP_Widget::form() 
 
\t * 
 
\t * @param array $instance Previously saved values from database. 
 
\t */ 
 

 
\t public function form($instance) { 
 
\t \t if (isset($instance[ 'title' ])) { 
 
\t \t \t $title = $instance[ 'title' ]; 
 
\t \t } 
 
\t \t else { 
 
\t \t \t $title = __('New title', 'isas-news'); 
 
\t \t } 
 
\t \t $cat \t \t \t = $instance['cat']; 
 
\t \t ?> 
 
\t \t <p> 
 
\t \t \t <label for="<?php echo $this->get_field_id('title'); ?>"> 
 
\t \t \t \t <?php _e('Title:'); ?> 
 
\t \t \t </label> 
 
\t \t \t <input class="widefat" id="<?php 
 
\t \t \t \t echo $this->get_field_id('title'); ?>" name="<?php 
 
\t \t \t \t echo $this->get_field_name('title'); ?>" type="text" 
 
\t \t \t \t value="<?php echo esc_attr($title); ?>"> 
 
\t \t </p> 
 

 
\t \t <label> 
 
\t \t \t <?php _e('Category'); ?>: 
 
\t \t \t <?php wp_dropdown_categories(array(
 
\t \t \t 'name' => $this->get_field_name("cat"), 
 
\t \t \t 'selected' => $instance["cat"])); ?> 
 
\t \t </label> 
 
     <?php 
 
\t } 
 

 
\t /** 
 
\t * Sanitize widget form values as they are saved. 
 
\t * 
 
\t * @see WP_Widget::update() 
 
\t * 
 
\t * @param array $new_instance Values just sent to be saved. 
 
\t * @param array $old_instance Previously saved values from database. 
 
\t * 
 
\t * @return array Updated safe values to be saved. 
 
\t */ 
 
\t public function update($new_instance, $old_instance) { 
 
\t \t $instance = array(); 
 
\t \t $instance['title'] = (! empty($new_instance['title'])) ? strip_tags($new_instance['title']) : ''; 
 
     $instance['cat'] = (! empty($new_instance['cat'])) ? strip_tags($new_instance['cat']) : ''; 
 
\t \t return $instance; 
 
\t } 
 

 
} // class news_roller

не может показаться, я должен сказать, что мой php очень ограничен.

Благодаря

ответ

4

Ваш журнал ошибок рассказывает о неопределенном индексе с именем 'after_widget.

Код строки в сообщении об ошибке отсутствует, но я думаю, что причина неудачи в следующей строке:

echo $args['after_widget'];

$args массив задается как параметр функции widget($args... В вашей <ul> -Часть вы перезаписать его:

$args = array(
    'cat' => $instance["cat"] 
); 

Вот почему заявление echo $args['after_widget']; не может ссылаться на индекс 'after_widget', который затем вызывает отсутствующий элемент.

Попробуйте переименовать собственную саморекламуную переменную $args, где вы создаете массив cat, и вы должны быть хорошими.