Skip to content

Instantly share code, notes, and snippets.

@carasmo
Last active October 31, 2017 22:17
Show Gist options
  • Save carasmo/d29722a1ef7e1ebe29125661ed3690a2 to your computer and use it in GitHub Desktop.
Save carasmo/d29722a1ef7e1ebe29125661ed3690a2 to your computer and use it in GitHub Desktop.
Use the plugin: https://github.com/vfontjr/classic-text-widget/ -- the filters were renamed with the prefix ``classic_`` before so to allow shortcodes and other things on the widget, you will need to do the following: ``add_filter( 'classic_widget_text', 'do_shortcode' );``
<?php namespace Your_Name_Space;
/**
*
* Classic Text Widget to address 4.8 WordPress Update
*
* READ AND DO:
* Change the text domain ``your-text-domain`` = 2 locations in the code
* Change the namespace ``Your_Name_Space`` 3 locations in the code
*
* Add the lang as usual
*
* Important: the filters (two of them) were renamed with ``classic_`` prefix. You will need to reaply
* example: add_filter( 'classic_widget_text', 'do_shortcode' );
*
*/
if( ! defined( 'ABSPATH' ) ) exit;
class ClassicTextWidget extends \WP_Widget {
/**
* Widget construction
*/
public function __construct() {
$widget_ops = array( 'classname' => 'classic-textwidget', 'description' => __('The classic text widget for arbitrary html or text.', 'your-text-domain') );
$control_ops = array( 'width' => 400, 'height' => 350 );
parent::__construct( 'ClassicTextWidget', __( 'Classic Text Widget', 'your-text-domain' ), $widget_ops, $control_ops );
}
/**
* OUTPUT: Outputs the content for the current Text widget instance.
*
* @since 2.8.0
* @access public
*
* @param array $args Display arguments including 'before_title', 'after_title',
* 'before_widget', and 'after_widget'.
* @param array $instance Settings for the current Text widget instance.
*/
public function widget( $args, $instance ) {
$title = apply_filters( 'classic_widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
$widget_text = ! empty( $instance['text'] ) ? $instance['text'] : '';
/**
* Filters the content of the Text widget.
*
* @since 2.3.0
* @since 4.4.0 Added the `$this` parameter.
*
* @param string $widget_text The widget content.
* @param array $instance Array of settings for the current widget.
* @param WP_Widget_Text $this Current Text widget instance.
*/
$text = apply_filters( 'classic_widget_text', $widget_text, $instance, $this );
echo $args['before_widget'];
if ( ! empty( $title ) ) :
echo $args['before_title'] . $title . $args['after_title'];
endif; ?>
<div class="textwidget"><?php echo !empty( $instance['filter'] ) ? wpautop( $text ) : $text; ?></div>
<?php
echo $args['after_widget'];
}
/**
* UPDATE: Handles updating settings for the current Text widget instance.
*
* @since 2.8.0
* @access public
*
* @param array $new_instance New settings for this instance as input by the user via
* WP_Widget::form().
* @param array $old_instance Old settings for this instance.
* @return array Settings to save or bool false to cancel saving.
*/
public function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance['title'] = sanitize_text_field( $new_instance['title'] );
if ( current_user_can( 'unfiltered_html' ) ) :
$instance['text'] = $new_instance['text'];
else:
$instance['text'] = wp_kses_post( $new_instance['text'] );
endif;
$instance['filter'] = ! empty( $new_instance['filter'] );
return $instance;
}
/**
* FORM: Outputs the Text widget settings form.
*
* @since 2.8.0
* @access public
*
* @param array $instance Current settings.
*/
public function form( $instance ) {
$instance = wp_parse_args( (array) $instance, array( 'title' => '', 'text' => '' ) );
$filter = isset( $instance['filter'] ) ? $instance['filter'] : 0;
$title = sanitize_text_field( $instance['title'] );
?>
<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>
<p><label for="<?php echo $this->get_field_id( 'text' ); ?>"><?php _e( 'Content:' ); ?></label>
<textarea class="widefat" rows="16" cols="20" id="<?php echo $this->get_field_id('text'); ?>" name="<?php echo $this->get_field_name('text'); ?>"><?php echo esc_textarea( $instance['text'] ); ?></textarea></p>
<p><input id="<?php echo $this->get_field_id('filter'); ?>" name="<?php echo $this->get_field_name('filter'); ?>" type="checkbox"<?php checked( $filter ); ?> />&nbsp;<label for="<?php echo $this->get_field_id('filter'); ?>"><?php _e('Automatically add paragraphs'); ?></label></p>
<?php
}
}
/**
* Register the Classic Text Widget
*/
function classic_text_widget_init() {
register_widget( 'Your_Name_Space\ClassicTextWidget' );
}
add_action( 'widgets_init', 'Your_Name_Space\classic_text_widget_init' );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment