How do i bring out post category name in my widget?
I customize the repeat post widget and add little functionalities to it. Everything is working fine but my challenge now is that the widget when used is not bringing out individual post category name. What am I gettin wrong in the widget as it output one post category even though the post link falls into another category.
View my site www.wordpress.bestrackservices.com/.
I have post in national, economy and others and it keeps showing entertainment even when the post category is not in it.
You will view the complete code of my carousel slider:
?php
/**
* WP_Widget_Carousel_Slider
*
* @since 2.8.0
*/
class WP_Widget_Carousel_Slider extends WP_Widget {
public function __construct() {
$widget_ops = array(
'classname' = 'widget_carousel_entries',
'description' = __( 'Your site#8217;s most Carousel Slider.', 'bobo'),
'customize_selective_refresh' = true,
);
parent::__construct( 'carousel-slider', __( 'Carousel Slider', 'bobo' ), $widget_ops );
}
/**
* Outputs the content for the current Carousel Slider widget instance.
*
* @since 2.8.0
*
* @param array $args Display arguments including 'before_title', 'after_title',
* 'before_widget', and 'after_widget'.
* @param array $instance Settings for the current Carousel Slider widget instance.
*/
public function widget( $args, $instance ) {
if ( ! isset( $args['widget_id'] ) ) {
$args['widget_id'] = $this-id;
}
$title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Carousel Slider', 'bobo');
/** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
$title = apply_filters( 'widget_title', $title, $instance, $this-id_base );
$number = ( ! empty( $instance['number'] ) ) ? absint( $instance['number'] ) : 5;
if ( ! $number ) {
$number = 5;
}
$show_date = isset( $instance['show_date'] ) ? $instance['show_date'] : true;
$show_cats = isset( $instance['show_cats'] ) ? $instance['show_cats'] : true;
/**
* Filters the arguments for the Carousel Slider widget.
*
* @since 3.4.0
* @since 4.9.0 Added the `$instance` parameter.
*
* @see WP_Query::get_posts()
*
* @param array $args An array of arguments used to retrieve the Carousel Slider.
* @param array $instance Array of settings for the current widget.
*/
$r = new WP_Query(
apply_filters(
'widget_posts_args',
array(
'posts_per_page' = $number,
'no_found_rows' = true,
'post_status' = 'publish',
'ignore_sticky_posts' = true,
),
$instance
)
);
if ( ! $r-have_posts() ) {
return;
}
?
?php echo $args['before_widget']; ?
?php
if ( $title ) {
echo $args['before_title'] . $title . $args['after_title'];
}
?
ul
?php foreach ( $r-posts as $carousel_post ) : ?
?php
$post_title = get_the_title( $carousel_post-ID );
$title = ( ! empty( $post_title ) ) ? $post_title : __( '( title)', 'bobo' );
?
li
a href="?php the_permalink( $carousel_post-ID ); ?"?php echo $title; ?/a
?php if ( $show_date ) : ?
span class="post-date"?php echo get_the_date( '', $carousel_post-ID ); ?/span
?php endif; ?
/li
?php endforeach; ?
/ul
?php
echo $args['after_widget'];
}
/**
* Handles updating the settings for the current Carousel Slider widget instance.
*
* @since 2.8.0
*
* @param array $new_instance New settings for this instance as input by the user via
* WP_Widget::form().
* @param array $old_instance Old settings for this instance.
* @return array Updated settings to save.
*/
public function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance['title'] = sanitize_text_field( $new_instance['title'] );
$instance['number'] = (int) $new_instance['number'];
$instance['show_date'] = isset( $new_instance['show_date'] ) ? (bool) $new_instance['show_date'] : true;
$instance['show_cats'] = isset( $new_instance['show_cats'] ) ? (bool) $new_instance['show_cats'] : true;
return $instance;
}
/**
* Outputs the settings form for the Carousel Slider widget.
*
* @since 2.8.0
*
* @param array $instance Current settings.
*/
public function form( $instance ) {
$title = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : '';
$number = isset( $instance['number'] ) ? absint( $instance['number'] ) : 5;
$cat_id = isset( $instance['cat_id'] ) ? (bool) $instance['show_cats'] : true;
$show_date = isset( $instance['show_date'] ) ? (bool) $instance['show_date'] : true;
?
plabel for="?php echo $this-get_field_id( 'title' ); ?"?php _e( 'Title:', 'bobo' ); ?/label
input class="widefat" id="?php echo $this-get_field_id( 'title' ); ?" name="?php echo $this-get_field_name( 'title' ); ?" type="text" value="?php echo $title; ?" //p
plabel for="?php echo $this-get_field_id( 'number' ); ?"?php _e( 'Number of posts to show:', 'bobo' ); ?/label
input class="tiny-text" id="?php echo $this-get_field_id( 'number' ); ?" name="?php echo $this-get_field_name( 'number' ); ?" type="number" step="1" min="1" value="?php echo $number; ?" size="3" //p
p
p
input class="checkbox" type="checkbox" ?php checked( $instance['show_cats'], 'on' ); ? id="?php echo $this-get_field_id( 'show_cats' ); ?" name="?php echo $this-get_field_name( 'show_cats' ); ?" /
label for="?php echo $this-get_field_id( 'show_cats' ); ?"Show Category/label
/p
p
label for="?php echo $this-get_field_id('category'); ?"?php _e('Category (if selected above):', 'bobo'); ?/label
?php
$activeoptions = $instance['category'];
if (!$activeoptions)
{
$activeoptions = array();
}
?
select multiple="true" id="?php echo $this-get_field_id('category'); ?" name="?php echo $this-get_field_name('category'); ?[]"
?php
$cats = get_categories('hide_empty=0');
foreach ($cats as $cat) {
$option = 'option value="'.$cat-term_id;
if ( in_array($cat-term_id,$activeoptions)) { $option .='" selected="selected'; }
$option .= '"';
$option .= $cat-cat_name;
$option .= ' ('.$cat-category_count.')';
$option .= '/option';
echo $option;
}
?
/select
/p
pinput class="checkbox" type="checkbox"?php checked( $show_date ); ? id="?php echo $this-get_field_id( 'show_date' ); ?" name="?php echo $this-get_field_name( 'show_date' ); ?" /
label for="?php echo $this-get_field_id( 'show_date' ); ?"?php _e( 'Display post date?' , 'bobo' ); ?/label/p
?php
}
}
add_action( 'widgets_init', function ()
{
register_widget( 'WP_Widget_Carousel_Slider' );
});
Topic link-category widgets posts Wordpress
Category Web