使用子主题PHP删除“Powered By”页脚

时间:2016-11-11 作者:Thredolsen

我想删除页脚中的“Powered by Wordpress”自定义链接。

我想在子主题的function.php 文件

我不想使用CSS(只是将其隐藏)、编辑原始主题文件(主题更新时将覆盖该文件)或复制footer.php 文件到子主题,并在那里进行编辑(因为在主题更新之后,我必须更新文件)。

我使用的主题是“闪闪发光”。页脚信息函数在中定义extras.php 文件:

function sparkling_footer_info() {
global $sparkling_footer_info;
printf( esc_html__( \'Theme by %1$s Powered by %2$s\', \'sparkling\' ) , \'<a href="http://colorlib.com/" target="_blank">Colorlib</a>\', \'<a href="http://wordpress.org/" target="_blank">WordPress</a>\');
}
并在页脚中调用。php文件(底部几行):

<div id="footer-area">
    <div class="container footer-inner">
        <div class="row">
            <?php get_sidebar( \'footer\' ); ?>
        </div>
    </div>

    <footer id="colophon" class="site-footer" role="contentinfo">
        <div class="site-info container">
            <div class="row">
                <?php if( of_get_option(\'footer_social\') ) sparkling_social_icons(); ?>
                <nav role="navigation" class="col-md-6">
                    <?php sparkling_footer_links(); ?>
                </nav>
                <div class="copyright col-md-6">
                    <?php echo of_get_option( \'custom_footer_text\', \'sparkling\' ); ?>
                    <?php sparkling_footer_info(); ?>
                </div>
            </div>
        </div><!-- .site-info -->
        <div class="scroll-to-top"><i class="fa fa-angle-up"></i></div><!-- .scroll-to-top -->
    </footer><!-- #colophon -->
</div>

我试着在孩子的function.php (连同一些变体),但它不起作用:

function remove_sparkling_footer(){
    remove_action( \'wp_footer\', \'sparkling_footer_info\' );}
add_action( \'init\', \'remove_sparkling_footer\' );
任何帮助或想法都将不胜感激。

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

作为功能sparkling_footer_info() 使用esc_html__() 此函数运行esc_html 在输出之前进行筛选,您可以在那里拦截输出。

add_filter (\'esc_html\', \'wpse_245817_esc_html\', 100, 2 );
function wpse_245817_esc_html( $safe_text, $text ) {
    if ( $safe_text == \'Theme by %1$s Powered by %2$s\' ) {
        return \'\';
    }
    return $safe_text;
}
也许您必须根据自己的需要对代码进行一些调整,我也没有测试它。

SO网友:cjbj

功能sparkling_footer_info() 直接从页脚代码调用,无需执行任何可以拦截的操作或筛选器。函数内部也没有过滤器。大概Sparkling的人不想让你把它拿走。de theme的许可证中甚至可能有关于这一点的内容,所以请检查您尝试的行为是否合法。

也就是说,PHP提供了method to redefine functions (所提供的runkit包含在PHP安装中,但并非自动如此)。除非从子主题中的模板调用中删除该函数,否则无法删除该函数,这显然不是您想要的。因此,您可以用一个空函数(简单地说是“return”)重新定义它。

你应该在sparkling_footer_info() 已加载,位于子主题之后functions.php 已加载。例如,您可以将其附加到wp_head 像这样:

add_action (\'wp_head\',\'wpse245817_replace_function\');

function wpse245817_replace_function () {
  runkit_function_redefine(\'sparkling_footer_info\',\'\',\'return;\');
  }
请注意,我尚未测试此代码。可能需要进行一些调试。