Я использую дочернюю тему.
Вот родительская функция
function aaron_customize_css() { echo '<style type="text/css">'; if ( is_admin_bar_showing() ) { ?> .main-navigation{top:32px;} @media screen and ( max-width: 782px ) { .main-navigation{top:46px;} } @media screen and ( max-width: 600px ) { .main-navigation{top:0px;} } <?php } echo '.site-title{color:#' . get_header_textcolor() . ';} '; $header_image = get_header_image(); if ( ! empty( $header_image ) ) { ?> .site-header { background: <?php esc_attr_e( get_theme_mod('aaron_header_bgcolor', '#fafafa') ) ?> url(<?php header_image(); ?>) <?php esc_attr_e( get_theme_mod('aaron_header_bgrepeat', 'no-repeat') ); ?> <?php esc_attr_e( get_theme_mod('aaron_header_bgpos', 'center top') ); ?>; background-size: <?php esc_attr_e( get_theme_mod('aaron_header_bgsize', 'cover') ); ?>; } <?php /* No image has been chosen, check for background color: */ }else{ if( get_theme_mod('aaron_header_bgcolor') ){ echo '.site-header { background:' . esc_attr( get_theme_mod('aaron_header_bgcolor', '#fafafa') ) . ';}'; echo '#action:hover, #action:focus{text-shadow:none;}'; } } //Call to Action text color if( get_theme_mod( 'aaron_action_color' ) <> ' ') { echo '#action, #action a{ color:' . esc_attr( get_theme_mod('aaron_action_color', '#000000') ) . ';}'; } echo '</style>' . "\n"; } add_action( 'wp_head', 'aaron_customize_css');
Вот дочерняя функция, которая уже отредактирована.
function aaron_customize_css_child() { echo "<!-- test i am in child theme --> "; echo '<style type="text/css">'; if ( is_admin_bar_showing() ) { ?> .main-navigation{top:32px;} @media screen and ( max-width: 782px ) { .main-navigation{top:46px;} } @media screen and ( max-width: 600px ) { .main-navigation{top:0px;} } <?php } echo '.site-title{color:#' . get_header_textcolor() . ';} '; $header_image = get_header_image(); if (! empty( $header_image)) { ?> .site-header { background: url(<?php header_image(); ?>) no-repeat center center; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover; } <?php /* No image has been chosen, check for background color: */ }else{ if( get_theme_mod('aaron_header_bgcolor') ){ echo '.site-header { background:' . esc_attr( get_theme_mod('aaron_header_bgcolor', '#fafafa') ) . ';}'; echo '#action:hover, #action:focus{text-shadow:none;}'; } } echo '</style>' . "\n"; } add_action( 'wp_head', 'aaron_customize_css_child');
Я пытаюсь перезаписать родительскую функцию в function.php. Я следовал инструкциям из http://code.tutsplus.com/articles/how-to-modify-the-parent-theme-behavior-within-child-theme–wp-31006 . Но это не работает. Я даже рассмотрел несколько вопросов о stackoverflow, но у меня не было того, что я искал. Я просмотрел http://codex.wordpress.org/Child_Themes, и он сказал, что я могу заменить родительскую функцию в child functions.php, объявив
if(!function_exists( 'aaron_customize_css')) { function aaron_customize_css() {} }
Я даже пробовал много других методов, но я не мог заставить его работать. Помогите?
Вы можете «удалить» родительскую функцию темы с помощью remove_action()
. Эта функция удаляет функцию, которая была прикреплена к указанному ключу действия, и часто используется для замены функций заменой:
remove_action('wp_head', 'aaron_customize_css');
Затем добавьте вместо этого свою собственную функцию:
add_action('wp_head', 'aaron_customize_css_child');
Итак, у вас в вашей дочерней теме будет что-то вроде следующего:
function aaron_customize_css_child() { remove_action('wp_head', 'aaron_customize_css'); // function contents } add_action('wp_head', 'aaron_customize_css_child', 100);