Files
Roman Pyrih c2e100a763 first commit
2023-07-24 08:30:51 +02:00

109 lines
2.9 KiB
PHP

<?php if ( ! defined( 'ABSPATH' ) ) {
die( 'Direct access forbidden.' );
}
if ( class_exists( 'Solarify_Widget_Recent' ) ) {
return;
}
class Solarify_Widget_Recent extends WP_Widget {
/**
* @internal
*/
public function __construct() {
$widget_ops = array(
'classname' => 'widget_recent_posts',
'description' => esc_html__( 'Most Recent Posts with Images', 'solarify' ),
);
parent::__construct( false, esc_html__( 'Theme - Recent Posts (thumbnail)', '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(
'items' => $number,
) );
$filepath = SOLARIFY_THEME_PATH . '/inc/widgets/recent/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
}
}