How to extend class and modify existing methods in parent class
-
I want to modify existing method from parent class in child theme without affect to other methods / methods in constructor to remove specific scripts
Parent theme functions.php
class Theme_Assets extends Theme_Base { /** * Hold data for wa_theme for frontend * @var array */ private static $theme_json = array(); /** * [__construct description] * @method __construct */ public function __construct() { // Frontend $this->add_action( 'wp_enqueue_scripts', 'dequeue', 2 ); $this->add_action( 'wp_enqueue_scripts', 'register' ); $this->add_action( 'wp_enqueue_scripts', 'enqueue' ); self::add_config( 'uris', array( 'ajax' => admin_url('admin-ajax.php', 'relative') )); } /** * Unregister Scripts and Styles * @method dequeue * @return [type] [description] */ public function dequeue() { } /** * Register Scripts and Styles * @method register * @return [type] [description] */ public function register() { $this->script( 'bootstrap', $this->get_vendor_uri( 'bootstrap/js/bootstrap.min.js' ), array( 'jquery' ) ); $this->script( 'intersection-observer', $this->get_vendor_uri( 'intersection-observer.js' ), array( 'jquery' ) ); $this->script( 'jquery-lazyload', $this->get_vendor_uri( 'lazyload.min.js' ), array( 'jquery' ) ); $this->script( 'imagesloaded', $this->get_vendor_uri( 'imagesloaded.pkgd.min.js' ), array( 'jquery' ) ); $this->script( 'jquery-vivus', $this->get_vendor_uri( 'vivus.min.js' ), array( 'jquery' ) ); $this->script( 'splittext', $this->get_vendor_uri( 'greensock/utils/SplitText.min.js' ), array( 'jquery' ) ); $this->script( 'scrollmagic', $this->get_vendor_uri( 'scrollmagic/ScrollMagic.min.js' ), array( 'jquery' ) ); $this->script( 'jquery-tinycolor', $this->get_vendor_uri( 'tinycolor-min.js' ), array( 'jquery' ) ); $deps = array( 'bootstrap', 'intersection-observer', 'imagesloaded', 'scrollmagic', ); // LazyLoad $enable_lazyload = theme_helper()->get_option( 'enable-lazy-load' ); if( 'on' === $enable_lazyload ) { array_push( $deps, 'jquery-lazyload' ); } // Header Js $enable_header = theme_helper()->get_option( 'header-enable-switch' ); if( 'on' === $enable_header ) { array_push( $deps, 'jquery-tinycolor' ); } if( is_page() ) { array_push( $deps, 'splittext', 'jquery-tinycolor' ); } } /** * Enqueue Scripts and Styles * @method enqueue * @return [type] [description] */ public function enqueue() { if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { wp_enqueue_script( 'comment-reply' ); } } // Register Helpers ---------------------------------------------------------- public function script( $handle, $src, $deps = null, $in_footer = true, $ver = null ) { wp_register_script( $handle, $src, $deps, $ver, $in_footer); } public function style( $handle, $src, $deps = null, $ver = null, $media = 'all' ) { wp_register_style( $handle, $src, $deps, $ver, $media ); } // Uri Helpers --------------------------------------------------------------- public function get_theme_uri($file = '') { return get_template_directory_uri() . '/' . $file; } public function get_child_uri($file = '') { return get_stylesheet_directory_uri() . '/' . $file; } public function get_css_uri($file = '') { return $this->get_theme_uri('assets/css/'.$file.'.css'); } public function get_elements_uri( $file = '' ) { return $this->get_theme_uri( 'assets/css/elements/' . $file . '.css' ); } public function get_js_uri($file = '') { return $this->get_theme_uri('assets/js/'.$file.'.js'); } public function get_vendor_uri($file = '') { return $this->get_theme_uri('assets/vendors/'.$file); } } new Theme_Assets;
I want to remove ‘splittext’ and ‘jquery-tinycolor’ scripts by inheriting dequeue function in parent class but it remove all other scripts
Here is Child theme’s code in functions.php
add_action( 'after_setup_theme', function() { class D extends Theme_Assets{ function __construct(){ $this->add_action( 'wp_enqueue_scripts', 'dequeue', 20 ); } public function dequeue(){ wp_dequeue_script('jquery-tinycolor'); wp_deregister_script('jquery-tinycolor'); wp_dequeue_script('splittext'); wp_deregister_script('splittext'); } } new D(); });
Any helps are appreciate.
Viewing 7 replies - 1 through 7 (of 7 total)
Viewing 7 replies - 1 through 7 (of 7 total)
- The topic ‘How to extend class and modify existing methods in parent class’ is closed to new replies.