-
-
Save ScottPhillips/4587050 to your computer and use it in GitHub Desktop.
class Widget_Setup | |
{ | |
public $widget_class = ''; | |
public $admin_styles = array(); | |
public $admin_scripts = array(); | |
public $front_styles = array(); | |
public $front_scripts = array(); | |
public $script_defaults = array( | |
'handle' => '', | |
'src' => '', | |
'deps' => array(), | |
'version' => false, | |
'in_footer' => false | |
); | |
public $style_defaults = array( | |
'handle' => '', | |
'src' => '', | |
'deps' => array(), | |
'version' => false, | |
'media' => 'all' | |
); | |
public function __construct( $widget_class = '', $admin_styles = array(), $admin_scripts = array(), $front_styles = array(), $front_scripts = array() ) { | |
$this->widget_class = $widget_class; | |
$this->admin_styles = $admin_styles; | |
$this->admin_scripts = $admin_scripts; | |
$this->front_styles = $front_styles; | |
$this->front_scripts = $front_scripts; | |
add_action( 'admin_print_styles', array( $this, 'add_styles' ) ); | |
add_action( 'admin_enqueue_scripts', array( $this, 'add_scripts' ) ); | |
add_action( 'wp_enqueue_scripts', array( $this, 'add_styles' ) ); | |
add_action( 'wp_enqueue_scripts', array( $this, 'add_scripts' ) ); | |
if( ! empty( $this->widget_class ) ) | |
add_action( 'widgets_init', array( $this, 'register_widget' ) ); | |
} | |
public function register_widget() { | |
register_widget( $this->widget_class ); | |
return true; | |
} | |
public function add_styles() { | |
$styles = ( is_admin() ) ? | |
$this->admin_styles : $this->front_styles; | |
if( empty( $styles ) ) | |
return false; | |
foreach( $styles as $style ) { | |
$style = wp_parse_args( $style, $this->style_defaults ); | |
wp_enqueue_style( | |
$style['handle'], | |
$style['src'], | |
$style['deps'], | |
$style['version'], | |
$style['media'] | |
); | |
} | |
return true; | |
} | |
public function add_scripts() { | |
$scripts = ( is_admin() ) ? | |
$this->admin_scripts : $this->front_scripts; | |
if( empty( $scripts ) ) | |
return false; | |
foreach( $scripts as $script ) { | |
$script = wp_parse_args( $script, $this->script_defaults ); | |
wp_enqueue_script( | |
$script['handle'], | |
$script['src'], | |
$script['deps'], | |
$script['version'], | |
$script['media'] | |
); | |
} | |
return true; | |
} | |
} |
class MyAwesomeWidget extends WP_Widget { | |
const TEXTDOMAIN = 'widget_textdomain'; | |
public function __construct() { | |
parent::__construct( | |
'widget-name-id', | |
__( 'Widget Name', self::TEXTDOMAIN ), | |
array( | |
'classname' => __CLASS__, | |
'description' => __( 'Short description.', self::TEXTDOMAIN ) | |
) | |
); | |
$admin_style = array( | |
array( 'handle' => 'somehandle', 'src' => 'path/to/source' ), | |
array( 'handle' => 'someotherhandle', 'src' => 'path/to/source' ), | |
); | |
$admin_scripts = array( | |
array( 'handle' => 'scrpthandle', 'src' => 'path/to/source', 'deps' => array( 'jquery') ), | |
); | |
$front_styles = array( | |
array( 'handle' => 'frontstyle', 'src' => 'path/to/src' ), | |
); | |
new Widget_Setup( __CLASS__, $admin_style, $admin_scripts, $front_styles ); | |
} | |
public function widget( $instance, $args ) {} | |
public function update( $new_instance, $old_instance ) {} | |
public function form( $instance ) {} | |
} |
Thank you very much for sharing such a nice post, it is very useful for me and everyone else story saver. I'll be checking out frequently to read your new post, so it's unmissable to keep up.
Widget_Setup.php organizes the management of styles and scripts for WordPress widgets, ensuring a streamlined approach for both admin and front-end display. This enhancement enhances widget performance by reducing unnecessary overhead and improving loading speed.
It is a great tool but i am unable to integrate it in to my wordpress website. Can someone please help me to use to in my website and work properly? Currently i am getting a lot of errors. My website is: https://gepcoonlinebill.com.pk/
You really nailed it brother. I am going to Modify it and use on my website (https://sasastatuscheck.co.za/) very soon. ChatGPT will help me in this regard.
Thank you for sharing this resource! I've been diving deep into geometry dash subzero and found it incredibly insightful.