Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace aviaFramework\widgets;
- use WP_Query;
- /**
- * AVIA NEWSBOX
- *
- * Widget that creates a list of latest news entries
- *
- * @package AviaFramework
- * @since ???
- * @since 4.9 Code was moved from class-framework-widgets.php
- */
- if( ! defined( 'AVIA_FW' ) ) { exit( 'No direct script access allowed' ); }
- if( ! class_exists( __NAMESPACE__ . '\avia_newsbox' ) )
- {
- class avia_newsbox extends \aviaFramework\widgets\base\Avia_Widget
- {
- /**
- *
- * @var string
- */
- protected $avia_term;
- /**
- *
- * @var string
- */
- protected $avia_post_type;
- /**
- *
- * @var string
- */
- protected $avia_new_query;
- /**
- * @since 4.9 added parameters $id_base, ... $control_options
- * @param string $id_base
- * @param string $name
- * @param array $widget_options
- * @param array $control_options
- */
- public function __construct( $id_base = '', $name = '', $widget_options = array(), $control_options = array() )
- {
- if( empty( $id_base ) )
- {
- $id_base = 'newsbox';
- }
- if( empty( $name ) )
- {
- $name = THEMENAME . ' ' . __( 'Latest News', 'avia_framework' );
- }
- if( empty( $widget_options ) )
- {
- $widget_options = array(
- 'classname' => 'newsbox',
- 'description' => __( 'A Sidebar widget to display latest post entries in your sidebar', 'avia_framework' ),
- 'show_instance_in_rest' => true,
- 'customize_selective_refresh' => false
- );
- }
- parent::__construct( $id_base, $name, $widget_options, $control_options );
- $this->defaults = array(
- 'title' => '',
- 'count' => '',
- 'excerpt' => '',
- 'cat' => ''
- );
- $this->avia_term = '';
- $this->avia_post_type = '';
- $this->avia_new_query = '';
- }
- /**
- * Output the widget in frontend
- *
- * @since 4.9
- * @param array $args
- * @param array $instance
- */
- public function widget( $args, $instance )
- {
- global $avia_config;
- $instance = $this->parse_args_instance( $instance );
- extract( $args, EXTR_SKIP );
- echo $before_widget;
- $title = empty( $instance['title'] ) ? '' : apply_filters( 'widget_title', $instance['title'] );
- $count = empty( $instance['count'] ) ? '' : $instance['count'];
- $cat = empty( $instance['cat'] ) ? '' : $instance['cat'];
- $excerpt = empty( $instance['excerpt'] ) ? '' : $instance['excerpt'];
- $image_size = isset( $avia_config['widget_image_size'] ) ? $avia_config['widget_image_size'] : 'widget';
- /**
- * @since 4.5.4
- * @param string $image_size
- * @param array $args
- * @param array $instance
- * @return string
- */
- $image_size = apply_filters( 'avf_newsbox_image_size', $image_size, $args, $instance );
- if( ! empty( $title ) )
- {
- echo $before_title . $title . $after_title;
- }
- if( empty( $this->avia_term ) )
- {
- $additional_loop = new WP_Query( "cat={$cat}&posts_per_page={$count}" );
- }
- else
- {
- $catarray = explode( ',', $cat );
- if( empty( $catarray[0] ) )
- {
- $new_query = array(
- 'posts_per_page' => $count,
- 'post_type' => $this->avia_post_type
- );
- }
- else
- {
- if( $this->avia_new_query )
- {
- $new_query = $this->avia_new_query;
- }
- else
- {
- $new_query = array(
- 'posts_per_page' => $count,
- 'tax_query' => array(
- array(
- 'taxonomy' => $this->avia_term,
- 'field' => 'id',
- 'terms' => explode( ',', $cat ),
- 'operator' => 'IN'
- )
- )
- );
- }
- }
- $additional_loop = new WP_Query( $new_query );
- }
- if( $additional_loop->have_posts() )
- {
- echo '<ul class="news-wrap image_size_' . $image_size . '">';
- while( $additional_loop->have_posts() )
- {
- $additional_loop->the_post();
- $format = '';
- if( empty( $this->avia_post_type ) )
- {
- $format = $this->avia_post_type;
- }
- if( empty( $format ) )
- {
- $format = get_post_format();
- }
- if( empty( $format ) )
- {
- $format = 'standard';
- }
- $the_id = get_the_ID();
- $link = get_post_meta( $the_id , '_portfolio_custom_link', true ) != '' ? get_post_meta( $the_id ,'_portfolio_custom_link_url', true ) : get_permalink();
- echo '<li class="news-content post-format-'.$format.'">';
- //check for preview images:
- $image = '';
- if( ! current_theme_supports( 'force-post-thumbnails-in-widget' ) )
- {
- $slides = avia_post_meta( get_the_ID(), 'slideshow', true );
- if( $slides != '' && ! empty( $slides[0]['slideshow_image'] ) )
- {
- $image = avia_image_by_id( $slides[0]['slideshow_image'], $image_size, 'image' );
- }
- }
- if( current_theme_supports( 'post-thumbnails' ) && ! $image )
- {
- $image = get_the_post_thumbnail( $the_id, $image_size );
- }
- $time_format = apply_filters( 'avia_widget_time', get_option( 'date_format' ) . ' - ' . get_option( 'time_format' ), 'avia_newsbox' );
- echo '<a class="news-link" title="' . get_the_title() . '" href="' . $link . '">';
- $nothumb = ( ! $image ) ? 'no-news-thumb' : '';
- echo "<span class='news-thumb {$nothumb}'>";
- echo $image;
- echo '</span>';
- if( empty( $avia_config['widget_image_size'] ) || 'display title and excerpt' != $excerpt )
- {
- echo '<strong class="news-headline">' . get_the_title();
- echo '<br />'. __( 'in', 'avia_framework') . ': ';
- $cats = get_the_category();
- $catsArray = [];
- foreach($cats as $cat)
- $catsArray[] = '<span class = "widget_latest_category">' .$cat->cat_name. '</span>';
- echo implode(", ", $catsArray);
- if( $time_format )
- {
- echo '<span class="news-time">' . get_the_time( $time_format ) . '</span>';
- }
- echo '</strong>';
- }
- echo '</a>';
- if( 'display title and excerpt' == $excerpt )
- {
- echo '<div class="news-excerpt">';
- if( ! empty( $avia_config['widget_image_size'] ) )
- {
- echo '<a class="news-link-inner" title="' . get_the_title() . '" href="' . $link . '">';
- echo '<strong class="news-headline">' . get_the_title() . '</strong>';
- echo '</a>';
- echo '<br />'. __( 'in', 'avia_framework') . ': ';
- $cats = get_the_category();
- $catsArray = [];
- foreach($cats as $cat)
- $catsArray[] = '<span class = "widget_latest_category">' .$cat->cat_name. '</span>';
- echo implode(", ", $catsArray);
- if( $time_format )
- {
- echo '<span class="news-time">' . get_the_time( $time_format ) . '</span>';
- }
- }
- the_excerpt();
- echo '</div>';
- }
- echo '</li>';
- }
- echo '</ul>';
- wp_reset_postdata();
- }
- echo $after_widget;
- }
- /**
- * Update widget options
- *
- * @param array $new_instance
- * @param array $old_instance
- * @return array
- */
- public function update( $new_instance, $old_instance )
- {
- $instance = $this->parse_args_instance( $old_instance );
- $instance['title'] = strip_tags( $new_instance['title'] );
- $instance['count'] = strip_tags( $new_instance['count'] );
- $instance['excerpt'] = strip_tags( $new_instance['excerpt'] );
- if( ! empty( $new_instance['cat'] ) )
- {
- $instance['cat'] = is_array( $new_instance['cat'] ) ? implode( ',', $new_instance['cat'] ) : strip_tags( $new_instance['cat'] );
- }
- return $instance;
- }
- /**
- * Output the form in backend
- *
- * @param array $instance
- */
- public function form( $instance )
- {
- $instance = $this->parse_args_instance( $instance );
- $title = strip_tags( $instance['title'] );
- $count = strip_tags( $instance['count'] );
- $excerpt = strip_tags( $instance['excerpt'] );
- $elementCat = array(
- 'name' => __( 'Which categories should be used for the portfolio?', 'avia_framework' ),
- 'desc' => __( 'You can select multiple categories here', 'avia_framework' ),
- 'id' => $this->get_field_name( 'cat' ) . '[]',
- 'type' => 'select',
- 'std' => strip_tags( $instance['cat'] ),
- 'class' => '',
- 'multiple' => 6,
- 'subtype' => 'cat'
- );
- //check if a different taxonomy than the default is set
- if( ! empty( $this->avia_term ) )
- {
- $elementCat['taxonomy'] = $this->avia_term;
- }
- $html = new \avia_htmlhelper();
- ?>
- <p>
- <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', 'avia_framework' ); ?>
- <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" /></label>
- </p>
- <p>
- <label for="<?php echo $this->get_field_id( 'count' ); ?>"><?php _e( 'How many entries do you want to display: ', 'avia_framework' ); ?></label>
- <select class="widefat" id="<?php echo $this->get_field_id( 'count ' ); ?>" name="<?php echo $this->get_field_name( 'count' ); ?>">
- <?php
- $list = '';
- for ($i = 1; $i <= 20; $i++ )
- {
- $selected = '';
- if( $count == $i )
- {
- $selected = 'selected="selected"';
- }
- $list .= "<option {$selected} value='{$i}'>{$i}</option>";
- }
- $list .= '</select>';
- echo $list;
- ?>
- </p>
- <p><label for="<?php echo $this->get_field_id( 'cat' ); ?>"><?php _e( 'Choose the categories you want to display (multiple selection possible):', 'avia_framework' ); ?>
- <?php echo $html->select( $elementCat ); ?>
- </label></p>
- <p>
- <label for="<?php echo $this->get_field_id( 'excerpt' ); ?>"><?php _e( 'Display title only or title & excerpt', 'avia_framework' ); ?></label>
- <select class="widefat" id="<?php echo $this->get_field_id( 'excerpt' ); ?>" name="<?php echo $this->get_field_name( 'excerpt' ); ?>">
- <?php
- $list = '';
- $answers = array(
- 'show title only' => __( 'show title only', 'avia_framework' ),
- 'display title and excerpt' => __( 'display title and excerpt', 'avia_framework' )
- );
- foreach ( $answers as $key => $answer )
- {
- $selected = '';
- if( $key == $excerpt )
- {
- $selected = 'selected="selected"';
- }
- $list .= "<option {$selected} value='{$key}'>{$answer}</option>";
- }
- $list .= '</select>';
- echo $list;
- ?>
- </p>
- <?php
- }
- }
- }
Advertisement
Advertisement