OQwebdesign logo
  • Home
  • About
  • Tech Blog

How to Create a Custom WordPress Widget

April 22, 2022 Create a Custom WordPress Widget
Share
Tweet
Share
0 Shares

Introduction

WordPress is one of the most popular CMS on the web. As a web developer we try to build in as many functionality into our custom theme so that it does not have bloat from install tons of plugins that will slow down server resources. There will be an instance we need to create and custom WordPress widget. He you will find a step-by-guide how to achieved create your custom WordPress widget.

Coding on Functions.php

WordPress uses its built-in WP_Widget class to deploy these methods. WP_Widget is the portion of WordPress that runs widgets.

To create the most basic custom widget in WordPress, you must make use of at least four methods. And we will be focusing on the following methods:

  • __construct()
  • form()
  • widget()
  • update()

You can copy and paste the following code snippet to your functions.php file of your WordPress theme. Which are the four methods inside the WP_Widget class to build your widget, in other word this is the foundation of our wiget.

// 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
  __('Beginner Widget', 'wpb_widget_domain'), 
   
  // Widget description
  array( 'description' => __( 'Simeple widget tutorial' ), )
  );
}
 
// Widget Backend
public function form( $instance ) {
  if ( isset( $instance[ 'title' ] ) ) {
    $title = $instance[ 'title' ];
  } else {
    $title = __( 'New title' );
  }
// 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;
}


// 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'];
}
 
// 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' );

 

Popular Tech Posts

  • .htaccess redirect https www made easy
  • How to avoid permissions folder issues for Laravel when using Ubuntu
  • Easy way to setup a local HTTP Server on macOS
  • A NEW Modern Clearfix Hack With display: flow-root

Categories Cloud

Apache Web Server CSS Debian Install Brotli Laravel Nginx PHP Ubuntu Wordpress
white OQWebdesign logo

© Copyright 2007-2025 OQwebdesign. All rights reserved.

  • Home
  • About
  • Tech Blog