Intereting Posts
FacetWP – показать расстояние в поле результатов Listify Поиск плагина фотогалереи Удаление / блог / из мультисайтов вызывает бесконечное перенаправление Запрос WordPress несколькими пользовательскими полями и порядок по дате Класс. Текущий элемент меню в пользовательском меню Уолкер Включить комментарии для ролей, CPT Изменить сайт WordPress без имени пользователя и пароля? Ошибка пользовательской таксономии подкачки с базой CPT в таксономии URL-адрес перезаписи Почему это ключевое слово «блог» автоматически добавляется в настройках постоянной ссылки? Нужно ли использовать jQuery для моего шаблона? В чем смысл User-agent и Disallow в файле robots.txt в wordpress Маскировка URL субдомена в основной домен с использованием .htaccess Изменение базового языка одного плагина Как вы автоматически активируете плагины из дочерних тем Добавить класс div только к одному виджету

Можно ли переопределить эту функцию / класс в дочерней теме?

Можно ли переопределить эту функцию widget из родительской темы? Я видел этот блог, но он касался более простого случая.

http://venutip.com/content/right-way-override-theme-functions

родитель

 class Chocolat_Widget_New_Entrys extends WP_Widget { function __construct() {... function widget( $args, $instance ) {... } add_action( 'widgets_init', create_function( '', 'return register_widget( "Chocolat_Widget_New_Entrys" );' ) ); 

Я попытался использовать remove_action('widgets_init','???'); но вскоре понял, что я не могу справиться с функцией, которая ее зарегистрировала!

Я думал об переопределении функции и создании подкласса, но все же он зарегистрирован в родительском объекте по имени родительского класса.

Я думал о parents.php копировании всего класса, но child functions.php загружается до parents.php .

Solutions Collecting From Web of "Можно ли переопределить эту функцию / класс в дочерней теме?"

Вам просто нужно запустить свой код с более высоким приоритетом, чем родительская тема, по умолчанию функция add_action равна 10, поэтому вы можете использовать:

 function s157343_unregister_widgets() { unregister_widget( 'Chocolat_Widget_New_Entrys' ); } add_action( 'widgets_init', 's157343_unregister_widgets', 20 ); 

Это позволит отменить регистрацию этого виджета. Конечно, вы все равно можете создать новый класс, который расширяет класс этого виджета, чтобы переопределить методы, которые вы хотите, и зарегистрировать новый виджет на основе этого:

 class my_Chocolat_Widget_New_Entrys extends Chocolat_Widget_New_Entrys() { public function __construct() {} public function widget( $args, $instance ) {} } add_action( 'widgets_init', create_function( '', 'return register_widget( "my_Chocolat_Widget_New_Entrys" );' ) );