当footer.php调用另一个文件时,我如何修改页脚?

时间:2018-06-16 作者:BenoitLussier

我试图修改阿瑟姆的塔龙主题的页脚。我正在使用一个正常工作的儿童主题。我如何修改页脚时,页脚。php调用位于函数页脚中的函数。php?

在页脚中。php,我有这个,我可以在子主题中修改它。

    <footer id="colophon" class="site-footer" role="contentinfo">
    <div class="container">
        <div class="row">   
        <?php do_action(\'talon_footer\'); ?>
        </div>
    </div>
</footer>
如果我修改<?php do_action(\'talon_footer\'); ?>, 整个页脚都不见了。

这个talon_footer 操作可在themes/talon/inc/functions/functions页脚中找到。php。此文件包含页脚的3个操作:侧栏、信用和菜单:

/**
     * Footer sidebar
     */
    function talon_footer_sidebar() {
        if ( is_active_sidebar( \'footer-1\' ) ) {
            get_sidebar(\'footer\');      
        }
    }
    add_action(\'talon_footer\', \'talon_footer_sidebar\', 7);

    /**
     * Footer credits
     */
    function talon_footer_credits() {
        ?>
            <div class="site-info col-md-6">
                <a href="<?php echo esc_url( __(                \'https://wordpress.org/\', \'talon\' ) ); ?>" rel="nofollow"><?php printf(         esc_html__( \'Powered by %s\', \'talon\' ), \'WordPress\' ); ?></a>
                <span class="sep"> | </span>
                <?php printf( esc_html__( \'Theme: %2$s by %1$s.\', \'talon\'       ), \'aThemes\', \'<a href="//athemes.com/theme/talon" rel="designer">Talon</a>\'        ); ?>
            </div><!-- .site-info -->
        <?php
    }
    add_action(\'talon_footer\', \'talon_footer_credits\', 8);

    /**
     * Footer menu
     */
    function talon_footer_menu() {
        ?>
            <nav id="footer-navigation" class="footer-navigation col-md-        6" role="navigation">
                <?php wp_nav_menu( array( \'theme_location\' => \'footer\',         \'menu_id\' => \'footer-menu\', \'depth\' => 1 ) ); ?>
            </nav>
        <?php
    }
    add_action(\'talon_footer\', \'talon_footer_menu\', 9);
themes/talon/inc/functions/folder还包含loader。php调用函数页脚。php文件:

require get_template_directory() . \'/inc/functions/functions-footer.php\';
我想在子主题中修改它。

我已尝试:

添加函数页脚。使用正确的路径将php添加到子主题,添加加载程序。php使用正确的路径访问子主题,并修改文件中的路径。它仍然使用父主题中的路径。

我还尝试添加require get_template_directory() . \'/inc/functions/functions-footer.php\'; 儿童主题的功能。php,它告诉我函数不能声明两次。

如果我从函数页脚添加一个函数。php到子主题的函数。php,它会中断代码并返回一个白色页面。

我通过复制子主题函数中要修改的函数来解决这个问题。使用不同名称和不同类并使用css显示的php:在原来的php上没有,但这并不理想。php方法会更干净。

提前感谢!

1 个回复
最合适的回答,由SO网友:Elex 整理而成

你可以remove_actionadd_action 用你自己的行动。(https://codex.wordpress.org/Function_Reference/remove_action) 在子主题函数中。php您可以添加以下代码,例如:

add_action(\'init\', \'remove_talon_footer\'); // Remove your parent theme actions
function remove_talon_footer() {
    remove_action(\'talon_footer\', \'talon_footer_sidebar\', 7); // Use same priority
    remove_action(\'talon_footer\', \'talon_footer_credits\', 8);
    remove_action(\'talon_footer\', \'talon_footer_menu\', 9);
}

/**
 * Footer sidebar
 */
function my_talon_footer_menu() {
    // What you want
}
add_action(\'talon_footer\', \'my_talon_footer_sidebar\', 7);

/**
 * Footer credits
 */
function my_talon_footer_menu() {
    // What you want
}
add_action(\'talon_footer\', \'my_talon_footer_credits\', 8);

/**
 * Footer menu
 */
function my_talon_footer_menu() {
    // What you want
}
add_action(\'talon_footer\', \'my_talon_footer_menu\', 9);
第一个函数告诉WP删除父主题中的操作,其他函数可以放在页脚函数文件中。

结束