Created
May 11, 2022 18:23
-
-
Save carlaizumibamford/4f081e55e5de9fd75d7cdd44ab8b56cc to your computer and use it in GitHub Desktop.
Creating A Custom Wordpress Widget Plugin Vol 7
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
Plugin Name: Name Of The Plugin | |
Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates | |
Description: A brief description of the Plugin. | |
Version: The Plugin's Version Number, e.g.: 1.0 | |
Author: Name Of The Plugin Author | |
Author URI: http://URI_Of_The_Plugin_Author | |
License: A "Slug" license name e.g. GPL2 | |
*/ | |
class My_Custom_Widget extends WP_Widget { | |
public function __construct() { | |
parent::__construct( | |
'my_custom_widget', | |
__( 'My Custom Widget', 'text_domain' ), | |
array( | |
'customize_selective_refresh' => true, | |
) | |
); | |
} | |
public function form( $instance ) { | |
$defaults = array( | |
'title' => '', | |
'text' => '', | |
'textarea' => '', | |
'checkbox' => '', | |
'select' => '', | |
); | |
extract( wp_parse_args( ( array ) $instance, $defaults ) ); ?> | |
<p> | |
<label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php _e( 'Widget Title', 'text_domain' ); ?></label> | |
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" /> | |
</p> | |
<p> | |
<label for="<?php echo esc_attr( $this->get_field_id( 'text' ) ); ?>"><?php _e( 'Text:', 'text_domain' ); ?></label> | |
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'text' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'text' ) ); ?>" type="text" value="<?php echo esc_attr( $text ); ?>" /> | |
</p> | |
<p> | |
<label for="<?php echo esc_attr( $this->get_field_id( 'textarea' ) ); ?>"><?php _e( 'Textarea:', 'text_domain' ); ?></label> | |
<textarea class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'textarea' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'textarea' ) ); ?>"><?php echo wp_kses_post( $textarea ); ?></textarea> | |
</p> | |
<p> | |
<input id="<?php echo esc_attr( $this->get_field_id( 'checkbox' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'checkbox' ) ); ?>" type="checkbox" value="1" <?php checked( '1', $checkbox ); ?> /> | |
<label for="<?php echo esc_attr( $this->get_field_id( 'checkbox' ) ); ?>"><?php _e( 'Checkbox', 'text_domain' ); ?></label> | |
</p> | |
<p> | |
<label for="<?php echo $this->get_field_id( 'select' ); ?>"><?php _e( 'Select', 'text_domain' ); ?></label> | |
<select name="<?php echo $this->get_field_name( 'select' ); ?>" id="<?php echo $this->get_field_id( 'select' ); ?>" class="widefat"> | |
<?php | |
$options = array( | |
'' => __( 'Select', 'text_domain' ), | |
'option_1' => __( 'Option 1', 'text_domain' ), | |
'option_2' => __( 'Option 2', 'text_domain' ), | |
'option_3' => __( 'Option 3', 'text_domain' ), | |
); | |
foreach ( $options as $key => $name ) { | |
echo '<option value="' . esc_attr( $key ) . '" id="' . esc_attr( $key ) . '" '. selected( $select, $key, false ) . '>'. $name . '</option>'; | |
} ?> | |
</select> | |
</p> | |
<?php } | |
public function update( $new_instance, $old_instance ) { | |
$instance = $old_instance; | |
$instance['title'] = isset( $new_instance['title'] ) ? wp_strip_all_tags( $new_instance['title'] ) : ''; | |
$instance['text'] = isset( $new_instance['text'] ) ? wp_strip_all_tags( $new_instance['text'] ) : ''; | |
$instance['textarea'] = isset( $new_instance['textarea'] ) ? wp_kses_post( $new_instance['textarea'] ) : ''; | |
$instance['checkbox'] = isset( $new_instance['checkbox'] ) ? 1 : false; | |
$instance['select'] = isset( $new_instance['select'] ) ? wp_strip_all_tags( $new_instance['select'] ) : ''; | |
return $instance; | |
} | |
public function widget( $args, $instance ) { | |
extract( $args ); | |
$title = isset( $instance['title'] ) ? apply_filters( 'widget_title', $instance['title'] ) : ''; | |
$text = isset( $instance['text'] ) ? $instance['text'] : ''; | |
$textarea = isset( $instance['textarea'] ) ?$instance['textarea'] : ''; | |
$select = isset( $instance['select'] ) ? $instance['select'] : ''; | |
$checkbox = ! empty( $instance['checkbox'] ) ? $instance['checkbox'] : false; | |
echo $before_widget; | |
echo '<div class="widget-text wp_widget_plugin_box">'; | |
if ( $title ) { | |
echo $before_title . $title . $after_title; | |
} | |
if ( $text ) { | |
echo '<p>' . $text . '</p>'; | |
} | |
if ( $textarea ) { | |
echo '<p>' . $textarea . '</p>'; | |
} | |
if ( $select ) { | |
echo '<p>' . $select . '</p>'; | |
} | |
if ( $checkbox ) { | |
echo '<p>Something awesome</p>'; | |
} | |
echo '</div>'; | |
echo $after_widget; | |
} | |
} | |
function my_register_custom_widget() { | |
register_widget( 'My_Custom_Widget' ); | |
} | |
add_action( 'widgets_init', 'my_register_custom_widget' ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment