__( '根据设置可以显示不同的评论', 'Bing' ) )
);
$this->default_instance = array(
'title' => __( '评论', 'Bing' ),
'number' => 5,
'exclude_users' => array(),
'exclude_administrator' => false,
'exclude_posts' => array(),
'descending' => true,
'date_limit' => 'unlimited'
);
}
//小工具内容
function widget( $args, $instance ){
if( empty( $instance ) ) $instance = $this->default_instance;
$title = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
echo $args['before_widget'];
if( !empty( $title ) ) echo $args['before_title'] . $title . $args['after_title'];
$exclude_users = $instance['exclude_users'];
if( $instance['exclude_administrator'] ){
$administrator_ids = array_map( 'absint', get_users( 'fields=ids&role=administrator' ) );
$exclude_users = array_unique( array_merge( $instance['exclude_users'], $administrator_ids ) );
}
$date_query = $instance['date_limit'] == 'unlimited' ? null : array( 'after' => $instance['date_limit'] );
$comments = get_comments( array(
'number' => $instance['number'],
'author__not_in' => $exclude_users,
'post__not_in' => $instance['exclude_posts'],
'order' => $instance['descending'] ? 'DESC' : 'ASC',
'date_query' => $date_query,
'status' => 'approve',
'type' => 'comment'
) );
if( empty( $comments ) ):
?>
';
foreach( $comments as $comment ):
$a_title = sprintf( __( '发表在《%s》', 'Bing' ), get_the_title( $comment->comment_post_ID ) );
?>
';
endif;
echo $args['after_widget'];
}
//保存设置选项
function update( $new_instance, $old_instance ){
$instance = array();
//标题
$instance['title'] = strip_tags( $new_instance['title'] );
//评论数量
$instance['number'] = absint( $new_instance['number'] );
if( $instance['number'] === 0 ) $instance['number'] = 1;
//排除用户
$instance['exclude_users'] = array_map( 'absint', (array) $new_instance['exclude_users'] );
if( !empty( $instance['exclude_users'] ) ){
$instance['exclude_users'] = get_users( array(
'include' => $instance['exclude_users'],
'fields' => 'ids'
) );
$instance['exclude_users'] = array_map( 'absint', $instance['exclude_users'] );
}
//排除所有管理员
$instance['exclude_administrator'] = !empty( $new_instance['exclude_administrator'] );
//排除文章
$instance['exclude_posts'] = array_map( 'absint', (array) $new_instance['exclude_posts'] );
if( !empty( $instance['exclude_posts'] ) ) $instance['exclude_posts'] = get_posts( array(
'post__in' => $instance['exclude_posts'],
'nopaging' => true,
'post_type' => 'post',
'post_status' => array( 'publish', 'future' ),
'fields' => 'ids',
'update_post_meta_cache' => false,
'update_post_term_cache' => false
) );
//倒序排列
$instance['descending'] = !empty( $new_instance['descending'] );
//日期限制
$all_date_limit = array(
'unlimited',
'1 day ago',
'3 day ago',
'1 week ago',
'1 month ago',
'3 month ago',
'6 month ago',
'1 year ago',
'2 year ago',
'3 year ago'
);
$instance['date_limit'] = in_array( $new_instance['date_limit'], $all_date_limit ) ? $new_instance['date_limit'] : 'unlimited';
return $instance;
}
//设置表单
function form( $instance ){
$instance = wp_parse_args( $instance, $this->default_instance );
$users = get_users( array(
'orderby' => 'registered',
'fields' => array( 'ID', 'display_name' )
) );
$date_limit = array(
'unlimited' => __( '无限制', 'Bing' ),
'1 day ago' => __( '一天之内', 'Bing' ),
'3 day ago' => __( '三天之内', 'Bing' ),
'1 week ago' => __( '一周之内', 'Bing' ),
'1 month ago' => __( '一个月之内', 'Bing' ),
'3 month ago' => __( '三个月之内', 'Bing' ),
'6 month ago' => __( '半年之内', 'Bing' ),
'1 year ago' => __( '一年之内', 'Bing' ),
'2 year ago' => __( '两年之内', 'Bing' ),
'3 year ago' => __( '三年之内', 'Bing' )
);
?>
/>
/>