110 lines
3.0 KiB
PHP
110 lines
3.0 KiB
PHP
<?php if ( ! defined( 'ABSPATH' ) ) {
|
|
die( 'Direct access forbidden.' );
|
|
}
|
|
|
|
if ( class_exists( 'Solarify_Widget_Popular' ) ) {
|
|
return;
|
|
}
|
|
|
|
class Solarify_Widget_Popular extends WP_Widget {
|
|
|
|
/**
|
|
* @internal
|
|
*/
|
|
public function __construct() {
|
|
$widget_ops = array(
|
|
'classname' => 'widget_popular_entries',
|
|
'description' => esc_html__( 'Most commented Posts', 'solarify' ),
|
|
);
|
|
parent::__construct( false, esc_html__( 'Theme - Popular Posts', 'solarify' ), $widget_ops );
|
|
}
|
|
|
|
/**
|
|
* @param array $args
|
|
* @param array $instance
|
|
*/
|
|
public function widget( $args, $instance ) {
|
|
extract( $args );
|
|
$title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
|
|
$number = ( (int) ( $instance['number'] ) > 0 ) ? esc_attr( $instance['number'] ) : 5;
|
|
|
|
$popular_posts = $this->fw_get_posts_with_info( array(
|
|
'sort' => 'comment_count',
|
|
'items' => $number,
|
|
) );
|
|
|
|
$filepath = SOLARIFY_THEME_PATH . '/inc/widgets/popular/views/widget.php';
|
|
|
|
if ( file_exists( $filepath ) ) {
|
|
include( $filepath );
|
|
} else {
|
|
esc_html_e( 'View not found', 'solarify' );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param array $args
|
|
*
|
|
* @return array
|
|
*/
|
|
public function fw_get_posts_with_info( $args = array() ) {
|
|
$defaults = array(
|
|
'sort' => 'recent',
|
|
'items' => 5,
|
|
'image_post' => true,
|
|
'date_post' => true,
|
|
'date_format' => 'F jS, Y',
|
|
'post_type' => 'post',
|
|
|
|
);
|
|
|
|
extract( wp_parse_args( $args, $defaults ) );
|
|
|
|
$query = new WP_Query( array(
|
|
'post_type' => $post_type,
|
|
'orderby' => $sort,
|
|
'order' => 'DESC',
|
|
'ignore_sticky_posts' => true,
|
|
'posts_per_page' => $items
|
|
) );
|
|
|
|
//wp reset query removed
|
|
|
|
return $query;
|
|
}
|
|
|
|
|
|
/**
|
|
* @param array $new_instance
|
|
* @param array $old_instance
|
|
*
|
|
* @return array
|
|
*/
|
|
public function update( $new_instance, $old_instance ) {
|
|
return $new_instance;
|
|
}
|
|
|
|
/**
|
|
* @param array $instance
|
|
*
|
|
* @return string|void
|
|
*/
|
|
public function form( $instance ) {
|
|
$instance = wp_parse_args( (array) $instance, array( 'number' => '', 'title' => '' ) );
|
|
$title = sanitize_text_field( $instance['title'] );
|
|
$number = esc_attr( $instance['number'] );
|
|
?>
|
|
<p><label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_html_e( 'Title:', 'solarify' ); ?></label>
|
|
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"
|
|
name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text"
|
|
value="<?php echo esc_attr( $title ); ?>"/>
|
|
</p>
|
|
<p>
|
|
<label for="<?php echo esc_attr( $this->get_field_id( 'number' ) ); ?>"><?php esc_html_e( 'Number of Blog posts', 'solarify' ); ?>
|
|
:</label>
|
|
<input type="text" name="<?php echo esc_attr( $this->get_field_name( 'number' ) ); ?>" value="<?php echo esc_attr( $number ); ?>"
|
|
class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'number' ) ); ?>"/>
|
|
</p>
|
|
<?php
|
|
}
|
|
}
|