2015-05-21 79 views
2

我正在使用兒童主題。覆蓋子函數function.php中的父函數WordPress

這裏的父函數

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-the-child-theme--wp-31006的指示。但它不起作用。我甚至在stackoverflow上看過幾個問題,但它沒有找到我想要的。我沒有檢查出http://codex.wordpress.org/Child_Themes,它說,我可以通過聲明

if(!function_exists('aaron_customize_css')) { 
    function aaron_customize_css() {} 
} 

我甚至試過很多其他方法代替孩子的functions.php父功能,但我無法得到它的工作。幫幫我?

+1

這些函數不具有相同的名稱。您是否想要將* add *中的父級函數調用到特定於子級的新功能中?或者你想要一個完整的覆蓋? –

+0

完整覆蓋。抱歉孩子的功能,我忘了從子功能中刪除「_child」。 –

回答

2

您可以用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); 
+0

試過,但它不工作.... :( 它應該是ADD_ACTION( 'after_setup_theme', 'remove_parent_theme_features',10); 功能remove_parent_theme_features(){ remove_action( 'wp_head', 'aaron_customize_css'); add_action('wp_head','aaron_customize_css_child'); } 但是最後一句應該是add_action('wp_head','aaron_customize_css');沒有單詞「_child」?我只想覆蓋父函數或類似的東西... –

+0

我無法閱讀任何...但是你的孩子的主題功能至少輸出'測試我在兒童主題'? – rnevius

+0

我剛剛編輯我的示例以嵌套在子功能'remove_action' – rnevius