Appuyer sur "Entrée" pour passer au contenu

Widget dernier KB pour Knowledge Base

Pour les personnes souhaitant afficher les derniers articles dans leur base de connaissance dans un widget de la même façon que les derniers postes.

Copier le code ci-après dans le fichier functions.php de votre thème.

// Register and load the widget
function wpb_load_widget() {
    register_widget( 'wpb_widget' );
}

add_action( 'widgets_init', 'wpb_load_widget' );
 
// 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 ) {
  global $wpdb;
  //$title = apply_filters( 'widget_title', $instance['title'] );
  $title = apply_filters( 'widget_title', 'Knowledge Base' );
  // 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' );
  
  // GET LAST ARTICLE IN BASE
  $arg = array('post_type' => 'epkb_post_type_1', 'post_status'=>'publish', 'posts_per_page'=>5);
  $r = new WP_Query($arg);

  if ( ! $r->have_posts() ) {
    return;
  }
  echo '<ul>';
  foreach ( $r->posts as $recent_post ) : 
    
    $post_title = get_the_title( $recent_post->ID );
    $title      = ( ! empty( $post_title ) ) ? $post_title : __( '(no title)' );
    
    echo '<li>	<a href="' .  get_the_permalink( $recent_post->ID ) .'">'. $title .'</a>';
    if ( $show_date ) :
      echo '<span class="post-date">' . get_the_date( '', $recent_post->ID ) . '</span>';
    endif;
    echo '</li>';
    endforeach;
  echo '</ul>';
  
  
  echo $args['after_widget'];
}
         
// Widget Backend 
public function form( $instance ) {
  if ( isset( $instance[ 'title' ] ) ) {
    //$title = $instance[ 'title' ];
    $title = 'Knowledge Base';
  }
  else {
  $title = __( 'Knowledge Base', '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 her

Il reste maintenant à aller activer le Widget dans l’administration de votre site.

Laisser un commentaire