Advertisement
Beee

Random event widget

May 31st, 2017
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.57 KB | None | 0 0
  1. <?php
  2.     class RandomEvent extends WP_Widget {
  3.  
  4.         public function __construct() {
  5.  
  6.             // Instantiate the parent object
  7.  
  8.             parent::__construct(
  9.                 'random-event',     // Base ID
  10.                 'Random Event',      // Name
  11.                 array(
  12.                     'classname' => 'widget--random-event',
  13.                     'description' => 'Shows a random event'
  14.                 ) // Args
  15.             );
  16.         }
  17.  
  18.         public function widget( $args, $instance ) {
  19.  
  20.             // get a random event
  21.             $random_args = array(
  22.                 'post_type'         => 'event',
  23.                 'orderby'           => 'rand',
  24.                 'posts_per_page'    => 1,
  25.             );
  26.             $random_event = get_posts( $random_args );
  27.  
  28.             // Widget output
  29.             extract( $args );
  30.             $rew_widgettitle = apply_filters( 'widget_title', $instance['rew_widgettitle'] );
  31.             if ( !$rew_widgettitle ) {
  32.                 $rew_widgettitle = 'Random event';
  33.             }
  34.             echo $before_widget;
  35.             echo $before_title . $rew_widgettitle . $after_title;
  36.  
  37.             if ( $random_event ) {
  38.                 foreach( $random_event as $event ) {
  39.                     echo '<a href="' . get_the_permalink( $event->ID ) . '">' . get_the_title( $event->ID ) . '</a>';
  40.                 }
  41.             }
  42.  
  43.             echo $after_widget;
  44.         }
  45.  
  46.         public function update( $new_instance, $old_instance ) {
  47.             // Save widget options
  48.             $instance = $old_instance;
  49.             $instance['rew_widgettitle'] = strip_tags($new_instance['rew_widgettitle']);
  50.             return $instance;
  51.         }
  52.  
  53.         public function form( $instance ) {
  54.             // Output admin widget options form
  55.             $rew_widgettitle = ! empty( $instance['rew_widgettitle'] ) ? $instance['rew_widgettitle'] : esc_html__( 'Random event', 'text_domain' );
  56.             ?>
  57.             <p>
  58.                 <label for="<?php echo $this->get_field_id('rew_widgettitle'); ?>">Widget title:</label>
  59.                 <input class="widefat" id="<?php echo $this->get_field_id('rew_widgettitle'); ?>" name="<?php echo $this->get_field_name('rew_widgettitle'); ?>" type="text" value="<?php if ( $rew_widgettitle ) { echo $rew_widgettitle; } ?>" />
  60.             </p>
  61.         <?php }
  62.     }
  63.  
  64.     function register_my_widgets() {
  65.         if ( function_exists( 'em_content' ) ) {
  66.             register_widget( 'RandomEvent' );
  67.         }
  68.     }
  69.     add_action( 'widgets_init', 'register_my_widgets' );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement