Shigaev
@Shigaev
кило

Как заменить функцию родительской темы?

Делал по мануалам, без знаний PHP.

Есть тема TwentyTwenty. Работаю над её дочерней. Понимаю, что файлы из директории inc дочерней темы, в отличие от других директорий, просто так не изменить. Причина непонятна, но исхожу из того, что есть. Итак, необходимо внести изменения в функцию twentytwenty_get_post_meta файла /inc/template-tags.php.

Поэтому, в functions.php дочерней темы, пытаюсь сначала ограничить работу родительской функции:
function chld_remove_twentytwenty_get_post_meta() {
	remove_action( 'init', 'twentytwenty_get_post_meta' );
}
add_action( 'wp_loaded', 'chld_remove_twentytwenty_get_post_meta' );


Далее — копирую и вставляю, после приведённого кода, функцию. Назваваю new_twentytwenty_get_post_meta. Немного редактирую в ней косметику, проверяю на фронтэнде. Однако, изменений не происходит. То есть, родительская функция даже не удаляется, по всей видимости.

Подскажите решение.

* * *
Может быть есть более кардинальное решение, вроде ограничения действия всего родительского файла /inc/template-tags.php для внесения изменений в такой же файл дочерней темы? Но у меня не получилось. Подменить пробовал различными сниппетами:

include_once get_template_directory() . '/inc/template-tags.php';
include_once get_stylesheet_directory() . '/inc/template-tags.php';
require get_stylesheet_directory_uri() . '/inc/template-tags.php';
require_once get_stylesheet_directory() . '/inc/template-tags.php';
require get_theme_file_path( '/inc/template-tags.php' );
require get_stylesheet_directory() . '/inc/template-tags.php';


Параноидально, но уже не знаю — куда бечь.
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 2
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
Потому, что вы ее не отключаете, она не где не повешена на хук ' 'init'', соответственно вы ночного не делаете.
Если вы проведете поиск по файлам темы то увидите, что она вызывается ровно один раз через функцию twentytwenty_the_post_meta();

Соответственно вам надо менять через дочернюю шаблоны в которых есть вызов twentytwenty_the_post_meta();
и в них менять ее на свою модифицированную функцию
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы