Create Recent Posts Widget
-
I want to make a custom widget to short a few posts (with their featured images).
I am starting with some code below from WpBeginner. I am working with the snippet immediately below to create the posts. When I insert the get_recent_posts snippet, I keep breaking the site. This is, no doubt, a result of a lack of my understanding of PHP.
So, where would the below snippet go in my widget?
<ul id="slider-id" class="slider-class"> <?php $recent_posts = wp_get_recent_posts(array( 'numberposts' => 4, // Number of recent posts thumbnails to display 'post_status' => 'publish' // Show only the published posts )); foreach($recent_posts as $post) : ?> <li> <a href="<?php echo get_permalink($post['ID']) ?>"> <?php echo get_the_post_thumbnail($post['ID'], 'full'); ?> //Assuming that the slider support captions <p class="slider-caption-class"><?php echo $post['post_title'] ?></p> </a> </li> <?php endforeach; wp_reset_query(); ?> </ul>// Creating the widget class wpb_widget extends WP_Widget { function __construct() { parent::__construct( // Base ID of your widget 'wpb_widget', // Widget name will appear in UI __('WPBeginner Widget', 'wpb_widget_domain'), // Widget description array( 'description' => __( 'Sample widget based on WPBeginner Tutorial', 'wpb_widget_domain' ), ) ); } // Creating widget front-end public function widget( $args, $instance ) { $title = apply_filters( 'widget_title', $instance['title'] ); // before and after widget arguments are defined by themes echo $args['before_widget']; if ( ! empty( $title ) ) echo $args['before_title'] . $title . $args['after_title']; // This is where you run the code and display the output echo __( 'Hello, World!', 'wpb_widget_domain' ); echo $args['after_widget']; } // Widget Backend public function form( $instance ) { if ( isset( $instance[ 'title' ] ) ) { $title = $instance[ 'title' ]; } else { $title = __( 'New title', 'wpb_widget_domain' ); } // Widget admin form ?> <p> <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></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 esc_attr( $title ); ?>" /> </p> <?php } // Updating widget replacing old instances with new public function update( $new_instance, $old_instance ) { $instance = array(); $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : ''; return $instance; } // Class wpb_widget ends here } // Register and load the widget function wpb_load_widget() { register_widget( 'wpb_widget' ); } add_action( 'widgets_init', 'wpb_load_widget' );
Viewing 3 replies - 1 through 3 (of 3 total)
Viewing 3 replies - 1 through 3 (of 3 total)
The topic ‘Create Recent Posts Widget’ is closed to new replies.