603 lines
30 KiB
PHP
603 lines
30 KiB
PHP
<?php
|
||
if(!function_exists('add_filter')) exit;
|
||
class FANSUB_Widget_Post extends WP_Widget {
|
||
public $args = array();
|
||
public $admin_args;
|
||
|
||
private function get_defaults() {
|
||
$defaults = array(
|
||
'bys' => array(
|
||
'recent' => __('Recent posts', 'fansub'),
|
||
'recent_modified' => __('Recent modified posts', 'fansub'),
|
||
'random' => __('Random posts', 'fansub'),
|
||
'comment' => __('Most comment posts', 'fansub'),
|
||
'category' => __('Posts by category', 'fansub'),
|
||
'featured' => __('Featured posts', 'fansub'),
|
||
'related' => __('Related posts', 'fansub'),
|
||
'like' => __('Most likes posts', 'fansub'),
|
||
'view' => __('Most views posts', 'fansub'),
|
||
'favorite' => __('Most favorite posts', 'fansub'),
|
||
'rate' => __('Most rate posts', 'fansub')
|
||
),
|
||
'post_type' => array(array('value' => 'post')),
|
||
'by' => 'recent',
|
||
'number' => 5,
|
||
'category' => array(),
|
||
'excerpt_length' => 75,
|
||
'thumbnail_size' => array(64, 64),
|
||
'title_length' => 50,
|
||
'show_author' => 0,
|
||
'show_date' => 0,
|
||
'show_comment_count' => 0,
|
||
'only_thumbnail' => 0,
|
||
'hide_thumbnail' => 0,
|
||
'widget_title_link_category' => 0,
|
||
'category_as_widget_title' => 1,
|
||
'full_width_posts' => array(
|
||
'none' => __('None', 'fansub'),
|
||
'first' => __('First post', 'fansub'),
|
||
'last' => __('Last post', 'fansub'),
|
||
'first_last' => __('First post and last post', 'fansub'),
|
||
'odd' => __('Odd posts', 'fansub'),
|
||
'even' => __('Even posts', 'fansub'),
|
||
'all' => __('All posts', 'fansub')
|
||
),
|
||
'full_width_post' => 'none',
|
||
'times' => array(
|
||
'all' => __('All time', 'fansub'),
|
||
'daily' => __('Daily', 'fansub'),
|
||
'weekly' => __('Weekly', 'fansub'),
|
||
'monthly' => __('Monthly', 'fansub'),
|
||
'yearly' => __('Yearly', 'fansub')
|
||
),
|
||
'time' => 'all',
|
||
'orders' => array(
|
||
'desc' => __('DESC', 'fansub'),
|
||
'asc' => __('ASC', 'fansub')
|
||
),
|
||
'order' => 'desc',
|
||
'orderbys' => array(
|
||
'title' => __('Title', 'fansub'),
|
||
'date' => __('Post date', 'fansub')
|
||
),
|
||
'orderby' => 'date',
|
||
'slider' => 0
|
||
);
|
||
$defaults = apply_filters('fansub_widget_post_defaults', $defaults);
|
||
$args = apply_filters('fansub_widget_post_args', array());
|
||
$args = wp_parse_args($args, $defaults);
|
||
return $args;
|
||
}
|
||
|
||
public function __construct() {
|
||
$this->args = $this->get_defaults();
|
||
$this->admin_args = array(
|
||
'id' => 'fansub_widget_post',
|
||
'name' => 'HocWP Post',
|
||
'class' => 'fansub-widget-post',
|
||
'description' => __('Your site’s most recent Posts and more.', 'fansub'),
|
||
'width' => 400
|
||
);
|
||
$this->admin_args = apply_filters('fansub_widget_post_admin_args', $this->admin_args);
|
||
parent::__construct($this->admin_args['id'], $this->admin_args['name'],
|
||
array(
|
||
'classname' => $this->admin_args['class'],
|
||
'description' => $this->admin_args['description'],
|
||
),
|
||
array(
|
||
'width' => $this->admin_args['width']
|
||
)
|
||
);
|
||
}
|
||
|
||
private function get_post_type_from_instance($instance) {
|
||
$post_type = isset($instance['post_type']) ? $instance['post_type'] : json_encode($this->args['post_type']);
|
||
$post_type = fansub_json_string_to_array($post_type);
|
||
if(!fansub_array_has_value($post_type)) {
|
||
$post_type = array(
|
||
array(
|
||
'value' => apply_filters('fansub_widget_post_default_post_type', 'post')
|
||
)
|
||
);
|
||
}
|
||
return $post_type;
|
||
}
|
||
|
||
public function widget($args, $instance) {
|
||
global $post;
|
||
$title = fansub_widget_title($args, $instance, false);
|
||
$post_type = $this->get_post_type_from_instance($instance);
|
||
$post_types = array();
|
||
foreach($post_type as $fvdata) {
|
||
$ptvalue = isset($fvdata['value']) ? $fvdata['value'] : '';
|
||
if(!empty($ptvalue)) {
|
||
$post_types[] = $ptvalue;
|
||
}
|
||
}
|
||
$number = isset($instance['number']) ? $instance['number'] : $this->args['number'];
|
||
$by = isset($instance['by']) ? $instance['by'] : $this->args['by'];
|
||
$category = isset($instance['category']) ? $instance['category'] : json_encode($this->args['category']);
|
||
$category = fansub_json_string_to_array($category);
|
||
$excerpt_length = isset($instance['excerpt_length']) ? $instance['excerpt_length'] : $this->args['excerpt_length'];
|
||
$thumbnail_size = isset($instance['thumbnail_size']) ? $instance['thumbnail_size'] : $this->args['thumbnail_size'];
|
||
$thumbnail_size = fansub_sanitize_size($thumbnail_size);
|
||
$full_width_post = fansub_get_value_by_key($instance, 'full_width_post', $this->args['full_width_post']);
|
||
$content_class = 'widget-content';
|
||
$slider = fansub_get_value_by_key($instance, 'slider', fansub_get_value_by_key($this->args, 'slider'));
|
||
$title_length = fansub_get_value_by_key($instance, 'title_length', fansub_get_value_by_key($this->args, 'title_length'));
|
||
$hide_thumbnail = fansub_get_value_by_key($instance, 'hide_thumbnail', fansub_get_value_by_key($this->args, 'hide_thumbnail'));
|
||
$widget_title_link_category = fansub_get_value_by_key($instance, 'widget_title_link_category', fansub_get_value_by_key($this->args, 'widget_title_link_category'));
|
||
$category_as_widget_title = fansub_get_value_by_key($instance, 'category_as_widget_title', fansub_get_value_by_key($this->args, 'category_as_widget_title'));
|
||
if((bool)$slider) {
|
||
fansub_add_string_with_space_before($content_class, 'post-slider');
|
||
}
|
||
if('category' == $by && (bool)$widget_title_link_category) {
|
||
$cvalue = current($category);
|
||
$term_id = isset($cvalue['value']) ? $cvalue['value'] : '';
|
||
$term_id = absint($term_id);
|
||
if($term_id > 0) {
|
||
$taxonomy = isset($cvalue['taxonomy']) ? $cvalue['taxonomy'] : '';
|
||
$link = new FANSUB_HTML('a');
|
||
$link->set_class('term-link');
|
||
$link->set_href(get_term_link($term_id, $taxonomy));
|
||
if((bool)$category_as_widget_title) {
|
||
$term = get_term($term_id, $taxonomy);
|
||
$title = $term->name;
|
||
} else {
|
||
$title = apply_filters('widget_title', fansub_get_value_by_key($instance, 'title'));
|
||
}
|
||
$link->set_text($title);
|
||
$title = fansub_get_value_by_key($args, 'before_title') . $link->build() . fansub_get_value_by_key
|
||
($args, 'after_title');
|
||
}
|
||
}
|
||
$widget_html = fansub_get_value_by_key($args, 'before_widget') . $title;
|
||
$widget_html .= '<div class="' . $content_class . '">';
|
||
$query_args = array(
|
||
'posts_per_page' => $number,
|
||
'post_type' => $post_types
|
||
);
|
||
$w_query = new WP_Query();
|
||
$get_by = false;
|
||
switch($by) {
|
||
case 'recent':
|
||
$get_by = true;
|
||
break;
|
||
case 'recent_modified':
|
||
$get_by = true;
|
||
$query_args['orderby'] = 'modified';
|
||
$query_args['order'] = 'DESC';
|
||
break;
|
||
case 'random':
|
||
$get_by = true;
|
||
$query_args['orderby'] = 'rand';
|
||
break;
|
||
case 'comment':
|
||
$get_by = true;
|
||
$query_args['orderby'] = 'comment_count';
|
||
break;
|
||
case 'category':
|
||
foreach($category as $cvalue) {
|
||
$term_id = isset($cvalue['value']) ? $cvalue['value'] : '';
|
||
$term_id = absint($term_id);
|
||
if($term_id > 0) {
|
||
$taxonomy = isset($cvalue['taxonomy']) ? $cvalue['taxonomy'] : '';
|
||
if(!empty($taxonomy)) {
|
||
$tax_item = array(
|
||
'taxonomy' => $taxonomy,
|
||
'field' => 'term_id',
|
||
'terms' => $term_id
|
||
);
|
||
$query_args = fansub_query_sanitize_tax_query($tax_item, $query_args);
|
||
$get_by = true;
|
||
}
|
||
}
|
||
}
|
||
break;
|
||
case 'related':
|
||
$get_by = true;
|
||
break;
|
||
case 'like':
|
||
$get_by = true;
|
||
$query_args['meta_key'] = 'likes';
|
||
$query_args['orderby'] = 'meta_value_num';
|
||
break;
|
||
case 'view':
|
||
$get_by = true;
|
||
$query_args['meta_key'] = 'views';
|
||
$query_args['orderby'] = 'meta_value_num';
|
||
break;
|
||
case 'featured':
|
||
$get_by = true;
|
||
fansub_query_sanitize_featured_args($query_args);
|
||
break;
|
||
case 'favorite':
|
||
break;
|
||
case 'rate':
|
||
break;
|
||
}
|
||
if($get_by) {
|
||
$query_args = apply_filters('fansub_widget_post_query_args', $query_args, $args, $instance, $this);
|
||
if('related' == $by) {
|
||
$w_query = fansub_query_related_post($query_args);
|
||
} else {
|
||
$w_query = fansub_query($query_args);
|
||
}
|
||
}
|
||
if($w_query->have_posts()) {
|
||
$list_class = 'list-unstyled';
|
||
foreach($post_types as $ptvalue) {
|
||
fansub_add_string_with_space_before($list_class, 'list-' . $ptvalue . 's');
|
||
}
|
||
$list_class = apply_filters('fansub_widget_post_list_class', $list_class);
|
||
|
||
if((bool)$slider) {
|
||
$four_posts = array_slice($w_query->posts, 0, 4);
|
||
$next_posts = array_slice($w_query->posts, 4, absint($w_query->post_count - 4));
|
||
$widget_content = apply_filters('fansub_widget_post_slider_html', '', $args, $instance, $this);
|
||
if(empty($widget_content)) {
|
||
$carousel_id = $this->id;
|
||
$carousel_id = fansub_sanitize_id($carousel_id);
|
||
$count = 0;
|
||
ob_start();
|
||
?>
|
||
<div id="<?php echo $carousel_id; ?>" class="carousel slide" data-ride="carousel">
|
||
<div class="carousel-inner" role="listbox">
|
||
<?php
|
||
foreach($four_posts as $post) {
|
||
setup_postdata($post);
|
||
$class = 'item';
|
||
if(0 == $count) {
|
||
fansub_add_string_with_space_before($class, 'active');
|
||
}
|
||
?>
|
||
<div class="<?php echo $class; ?>">
|
||
<?php
|
||
fansub_article_before();
|
||
do_action('fansub_widget_post_before_post', $args, $instance, $this);
|
||
if(!(bool)$hide_thumbnail) {
|
||
fansub_post_thumbnail(array('width' => 300, 'height' => 200));
|
||
}
|
||
do_action('fansub_widget_post_before_post_title', $args, $instance, $this);
|
||
fansub_post_title_link(array('title' => fansub_substr(get_the_title(), $title_length)));
|
||
do_action('fansub_widget_post_after_post_title', $args, $instance, $this);
|
||
fansub_entry_summary();
|
||
do_action('fansub_widget_post_after_post', $args, $instance, $this);
|
||
fansub_article_after();
|
||
?>
|
||
</div>
|
||
<?php
|
||
$count++;
|
||
}
|
||
wp_reset_postdata();
|
||
?>
|
||
</div>
|
||
<ol class="carousel-indicators list-inline list-unstyled">
|
||
<?php
|
||
$count = count($four_posts);
|
||
for($i = 0; $i < $count; $i++) {
|
||
$indicator_class = 'indicator-item';
|
||
if(0 == $i) {
|
||
fansub_add_string_with_space_before($indicator_class, 'active');
|
||
}
|
||
?>
|
||
<li data-target="#<?php echo $carousel_id; ?>" data-slide-to="<?php echo $i; ?>" class="<?php echo $indicator_class; ?>">
|
||
<span><?php echo ($i + 1); ?></span>
|
||
</li>
|
||
<?php
|
||
}
|
||
?>
|
||
</ol>
|
||
<a class="left carousel-control" href="#<?php echo $carousel_id; ?>" role="button" data-slide="prev">
|
||
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
|
||
<span class="sr-only">Previous</span>
|
||
</a>
|
||
<a class="right carousel-control" href="#<?php echo $carousel_id; ?>" role="button" data-slide="next">
|
||
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
|
||
<span class="sr-only">Next</span>
|
||
</a>
|
||
</div>
|
||
<?php
|
||
$widget_content = ob_get_clean();
|
||
if(fansub_array_has_value($next_posts)) {
|
||
?>
|
||
<div class="more-posts">
|
||
<?php
|
||
$widget_content .= '<ul class="' . $list_class . '">';
|
||
$loop_html = apply_filters('fansub_widget_post_loop_html', '', $args, $instance, $this);
|
||
if(empty($loop_html)) {
|
||
$count = 0;
|
||
ob_start();
|
||
foreach($next_posts as $post) {
|
||
setup_postdata($post);
|
||
$class = 'a-widget-post';
|
||
$full_width = fansub_widget_item_full_width_result($full_width_post, $w_query->post_count, $count);
|
||
if($full_width) {
|
||
fansub_add_string_with_space_before($class, 'full-width');
|
||
}
|
||
?>
|
||
<li <?php post_class($class); ?>>
|
||
<?php
|
||
do_action('fansub_widget_post_before_post', $args, $instance, $this);
|
||
if(!(bool)$hide_thumbnail) {
|
||
fansub_post_thumbnail(array('width' => $thumbnail_size[0], 'height' => $thumbnail_size[1]));
|
||
}
|
||
do_action('fansub_widget_post_before_post_title', $args, $instance, $this);
|
||
fansub_post_title_link(array('title' => fansub_substr(get_the_title(), $title_length)));
|
||
do_action('fansub_widget_post_after_post_title', $args, $instance, $this);
|
||
the_excerpt();
|
||
do_action('fansub_widget_post_after_post', $args, $instance, $this);
|
||
?>
|
||
</li>
|
||
<?php
|
||
$count++;
|
||
}
|
||
wp_reset_postdata();
|
||
$loop_html .= ob_get_clean();
|
||
}
|
||
$widget_content .= $loop_html;
|
||
$widget_content .= '</ul>';
|
||
?>
|
||
</div>
|
||
<?php
|
||
}
|
||
}
|
||
$widget_html .= $widget_content;
|
||
} else {
|
||
$widget_html .= '<ul class="' . $list_class . '">';
|
||
$loop_html = apply_filters('fansub_widget_post_loop_html', '', $args, $instance, $this);
|
||
if(empty($loop_html)) {
|
||
$count = 0;
|
||
ob_start();
|
||
while($w_query->have_posts()) {
|
||
$w_query->the_post();
|
||
$class = 'a-widget-post';
|
||
$full_width = false;
|
||
if('all' == $full_width_post) {
|
||
$full_width = true;
|
||
} elseif('first' == $full_width_post && 0 == $count) {
|
||
$full_width = true;
|
||
} elseif('last' == $full_width_post && $count == $w_query->post_count) {
|
||
$full_width = true;
|
||
} elseif('first_last' == $full_width_post && (0 == $count || $count == $w_query->post_count)) {
|
||
$full_width = true;
|
||
} elseif('odd' == $full_width_post && ($count % 2) != 0) {
|
||
$full_width = true;
|
||
} elseif('even' == $full_width_post && ($count % 2) == 0) {
|
||
$full_width = true;
|
||
}
|
||
if($full_width) {
|
||
fansub_add_string_with_space_before($class, 'full-width');
|
||
}
|
||
if($hide_thumbnail) {
|
||
fansub_add_string_with_space_before($class, 'hide-thumbnail');
|
||
}
|
||
?>
|
||
<li <?php post_class($class); ?>>
|
||
<?php
|
||
do_action('fansub_widget_post_before_post', $args, $instance, $this);
|
||
if(!(bool)$hide_thumbnail) {
|
||
fansub_post_thumbnail(array('width' => $thumbnail_size[0], 'height' => $thumbnail_size[1]));
|
||
}
|
||
do_action('fansub_widget_post_before_post_title', $args, $instance, $this);
|
||
fansub_post_title_link(array('title' => fansub_substr(get_the_title(), $title_length)));
|
||
do_action('fansub_widget_post_after_post_title', $args, $instance, $this);
|
||
do_action('fansub_widget_post_after_post', $args, $instance, $this);
|
||
?>
|
||
</li>
|
||
<?php
|
||
$count++;
|
||
}
|
||
wp_reset_postdata();
|
||
$loop_html .= ob_get_clean();
|
||
}
|
||
$widget_html .= $loop_html;
|
||
$widget_html .= '</ul>';
|
||
$widget_html .= apply_filters('fansub_widget_post_after_loop', '', $args, $instance, $this);
|
||
}
|
||
} else {
|
||
$widget_html .= '<p class="nothing-found">' . __('Nothing found!', 'fansub') . '</p>';
|
||
}
|
||
$widget_html = apply_filters('fansub_widget_post_html', $widget_html, $args, $instance, $this);
|
||
$widget_html .= '</div>';
|
||
$widget_html .= fansub_get_value_by_key($args, 'after_widget');
|
||
echo $widget_html;
|
||
}
|
||
|
||
public function form($instance) {
|
||
$title = fansub_get_value_by_key($instance, 'title');
|
||
$post_type = $this->get_post_type_from_instance($instance);
|
||
$number = fansub_get_value_by_key($instance, 'number', fansub_get_value_by_key($this->args, 'number'));
|
||
$by = fansub_get_value_by_key($instance, 'by', fansub_get_value_by_key($this->args, 'by'));
|
||
$category = fansub_get_value_by_key($instance, 'category', json_encode(fansub_get_value_by_key($this->args, 'category')));
|
||
$category = fansub_json_string_to_array($category);
|
||
$thumbnail_size = fansub_get_value_by_key($instance, 'thumbnail_size', fansub_get_value_by_key($this->args, 'thumbnail_size'));
|
||
$full_width_post = fansub_get_value_by_key($instance, 'full_width_post', fansub_get_value_by_key($this->args, 'full_width_post'));
|
||
|
||
$title_length = fansub_get_value_by_key($instance, 'title_length', fansub_get_value_by_key($this->args, 'title_length'));
|
||
$hide_thumbnail = fansub_get_value_by_key($instance, 'hide_thumbnail', fansub_get_value_by_key($this->args, 'hide_thumbnail'));
|
||
$widget_title_link_category = fansub_get_value_by_key($instance, 'widget_title_link_category', fansub_get_value_by_key($this->args, 'widget_title_link_category'));
|
||
$category_as_widget_title = fansub_get_value_by_key($instance, 'category_as_widget_title', fansub_get_value_by_key($this->args, 'category_as_widget_title'));
|
||
|
||
fansub_field_widget_before($this->admin_args['class']);
|
||
|
||
fansub_widget_field_title($this->get_field_id('title'), $this->get_field_name('title'), $title);
|
||
|
||
$lists = get_post_types(array('_builtin' => false, 'public' => true), 'objects');
|
||
if(!array_key_exists('post', $lists)) {
|
||
$lists[] = get_post_type_object('post');
|
||
}
|
||
$all_option = '';
|
||
foreach($lists as $lvalue) {
|
||
$selected = '';
|
||
if(!fansub_array_has_value($post_type)) {
|
||
$post_type[] = array('value' => 'post');
|
||
}
|
||
foreach($post_type as $ptvalue) {
|
||
$ptype = isset($ptvalue['value']) ? $ptvalue['value'] : '';
|
||
if($lvalue->name == $ptype) {
|
||
$selected = $lvalue->name;
|
||
break;
|
||
}
|
||
}
|
||
$all_option .= fansub_field_get_option(array('value' => $lvalue->name, 'text' => $lvalue->labels->singular_name, 'selected' => $selected));
|
||
}
|
||
$args = array(
|
||
'id' => $this->get_field_id('post_type'),
|
||
'name' => $this->get_field_name('post_type'),
|
||
'all_option' => $all_option,
|
||
'value' => $post_type,
|
||
'label' => __('Post type:', 'fansub'),
|
||
'placeholder' => __('Choose post types', 'fansub'),
|
||
'multiple' => true
|
||
);
|
||
fansub_widget_field('fansub_field_select_chosen', $args);
|
||
|
||
$args = array(
|
||
'id' => $this->get_field_id('number'),
|
||
'name' => $this->get_field_name('number'),
|
||
'value' => $number,
|
||
'label' => __('Number posts:', 'fansub')
|
||
);
|
||
fansub_widget_field('fansub_field_input_number', $args);
|
||
|
||
$lists = $this->args['bys'];
|
||
$all_option = '';
|
||
foreach($lists as $lkey => $lvalue) {
|
||
$all_option .= fansub_field_get_option(array('value' => $lkey, 'text' => $lvalue, 'selected' => $by));
|
||
}
|
||
$args = array(
|
||
'id' => $this->get_field_id('by'),
|
||
'name' => $this->get_field_name('by'),
|
||
'value' => $by,
|
||
'all_option' => $all_option,
|
||
'label' => __('Get by:', 'fansub'),
|
||
'class' => 'get-by'
|
||
);
|
||
fansub_widget_field('fansub_field_select', $args);
|
||
|
||
$all_option = '';
|
||
$taxonomies = fansub_get_hierarchical_taxonomies();
|
||
foreach($taxonomies as $tkey => $tax) {
|
||
$lists = fansub_get_hierarchical_terms(array($tkey));
|
||
if(fansub_array_has_value($lists)) {
|
||
$all_option .= '<optgroup label="' . $tax->labels->singular_name . '">';
|
||
foreach($lists as $lvalue) {
|
||
$selected = '';
|
||
if(fansub_array_has_value($category)) {
|
||
foreach($category as $cvalue) {
|
||
$term_id = isset($cvalue['value']) ? $cvalue['value'] : 0;
|
||
if($lvalue->term_id == $term_id) {
|
||
$selected = $lvalue->term_id;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
$all_option .= fansub_field_get_option(array('value' => $lvalue->term_id, 'text' => $lvalue->name, 'selected' => $selected, 'attributes' => array('data-taxonomy' => $tkey)));
|
||
}
|
||
$all_option .= '</optgroup>';
|
||
}
|
||
}
|
||
$args = array(
|
||
'id' => $this->get_field_id('category'),
|
||
'name' => $this->get_field_name('category'),
|
||
'all_option' => $all_option,
|
||
'value' => $category,
|
||
'label' => __('Category:', 'fansub'),
|
||
'placeholder' => __('Choose terms', 'fansub'),
|
||
'multiple' => true,
|
||
'class' => 'select-category'
|
||
);
|
||
if('category' != $by) {
|
||
$args['hidden'] = true;
|
||
}
|
||
fansub_widget_field('fansub_field_select_chosen', $args);
|
||
|
||
$args = array(
|
||
'id_width' => $this->get_field_id('thumbnail_size_width'),
|
||
'name_width' => $this->get_field_name('thumbnail_size_width'),
|
||
'id_height' => $this->get_field_id('thumbnail_size_height'),
|
||
'name_height' => $this->get_field_name('thumbnail_size_height'),
|
||
'value' => $thumbnail_size,
|
||
'label' => __('Thumbnail size:', 'fansub')
|
||
);
|
||
fansub_widget_field('fansub_field_size', $args);
|
||
|
||
$lists = $this->args['full_width_posts'];
|
||
$all_option = '';
|
||
foreach($lists as $lkey => $lvalue) {
|
||
$all_option .= fansub_field_get_option(array('value' => $lkey, 'text' => $lvalue, 'selected' => $full_width_post));
|
||
}
|
||
$args = array(
|
||
'id' => $this->get_field_id('full_width_post'),
|
||
'name' => $this->get_field_name('full_width_post'),
|
||
'value' => $full_width_post,
|
||
'all_option' => $all_option,
|
||
'label' => __('Full width posts:', 'fansub'),
|
||
'class' => 'full-width-post'
|
||
);
|
||
fansub_widget_field('fansub_field_select', $args);
|
||
|
||
$args = array(
|
||
'id' => $this->get_field_id('title_length'),
|
||
'name' => $this->get_field_name('title_length'),
|
||
'value' => $title_length,
|
||
'label' => __('Title length:', 'fansub')
|
||
);
|
||
fansub_widget_field('fansub_field_input_number', $args);
|
||
|
||
$slider = fansub_get_value_by_key($instance, 'slider', fansub_get_value_by_key($this->args, 'slider'));
|
||
$args = array(
|
||
'id' => $this->get_field_id('slider'),
|
||
'name' => $this->get_field_name('slider'),
|
||
'value' => $slider,
|
||
'label' => __('Display post as slider?', 'fansub')
|
||
);
|
||
fansub_widget_field('fansub_field_input_checkbox', $args);
|
||
|
||
$args = array(
|
||
'id' => $this->get_field_id('hide_thumbnail'),
|
||
'name' => $this->get_field_name('hide_thumbnail'),
|
||
'value' => $hide_thumbnail,
|
||
'label' => __('Hide post thumbnail?', 'fansub')
|
||
);
|
||
fansub_widget_field('fansub_field_input_checkbox', $args);
|
||
|
||
$args = array(
|
||
'id' => $this->get_field_id('widget_title_link_category'),
|
||
'name' => $this->get_field_name('widget_title_link_category'),
|
||
'value' => $widget_title_link_category,
|
||
'label' => __('Link widget title with category?', 'fansub')
|
||
);
|
||
fansub_widget_field('fansub_field_input_checkbox', $args);
|
||
|
||
$args = array(
|
||
'id' => $this->get_field_id('category_as_widget_title'),
|
||
'name' => $this->get_field_name('category_as_widget_title'),
|
||
'value' => $category_as_widget_title,
|
||
'label' => __('Display category name as widget title?', 'fansub')
|
||
);
|
||
fansub_widget_field('fansub_field_input_checkbox', $args);
|
||
|
||
fansub_field_widget_after();
|
||
}
|
||
|
||
public function update($new_instance, $old_instance) {
|
||
$instance = $old_instance;
|
||
$instance['title'] = strip_tags(fansub_get_value_by_key($new_instance, 'title'));
|
||
$instance['post_type'] = fansub_get_value_by_key($new_instance, 'post_type', json_encode($this->args['post_type']));
|
||
$instance['number'] = fansub_get_value_by_key($new_instance, 'number', $this->args['number']);
|
||
$instance['by'] = fansub_get_value_by_key($new_instance, 'by', $this->args['by']);
|
||
$instance['category'] = fansub_get_value_by_key($new_instance, 'category', json_encode($this->args['category']));
|
||
$instance['full_width_post'] = fansub_get_value_by_key($new_instance, 'full_width_post', $this->args['full_width_post']);
|
||
$width = fansub_get_value_by_key($new_instance, 'thumbnail_size_width', $this->args['thumbnail_size'][0]);
|
||
$height = fansub_get_value_by_key($new_instance, 'thumbnail_size_height', $this->args['thumbnail_size'][1]);
|
||
$instance['thumbnail_size'] = array($width, $height);
|
||
$instance['slider'] = fansub_checkbox_post_data_value($new_instance, 'slider');
|
||
$instance['title_length'] = fansub_get_value_by_key($new_instance, 'title_length', $this->args['title_length']);
|
||
$instance['hide_thumbnail'] = fansub_checkbox_post_data_value($new_instance, 'hide_thumbnail');
|
||
$instance['widget_title_link_category'] = fansub_checkbox_post_data_value($new_instance, 'widget_title_link_category');
|
||
$instance['category_as_widget_title'] = fansub_checkbox_post_data_value($new_instance, 'category_as_widget_title');
|
||
return $instance;
|
||
}
|
||
}
|