如何在WordPress子主题中覆盖父主题函数?解决复制函数报错
嘿,这个问题我太熟悉了!你直接把父主题的oblique_footer_credits函数复制到子主题导致网站崩溃,核心原因是PHP不允许同名函数重复声明——父主题已经定义过这个函数了,子主题再定义一次就会触发致命错误,这就是你看到“技术问题”提示的根源。
下面是正确的修改步骤,一步步来:
1. 先移除父主题的函数钩子绑定
我们需要先把父主题中oblique_footer_credits和oblique_footer动作钩子的关联取消掉。为了确保这个操作在父主题函数加载之后执行,我们用after_setup_theme钩子来触发:
add_action( 'after_setup_theme', 'remove_oblique_parent_footer_credits' ); function remove_oblique_parent_footer_credits() { remove_action( 'oblique_footer', 'oblique_footer_credits' ); }
2. 定义你自己的版权函数
现在你可以写一个属于子主题的oblique_footer_credits函数,修改里面的文本内容即可。比如下面是修改后的示例(你可以根据需求调整文本):
function oblique_footer_credits() { // 自定义网站链接和文本 echo '<a href="' . esc_url( home_url( '/' ) ) . '" rel="nofollow">'; printf( __( '欢迎访问 %s', 'oblique' ), get_bloginfo( 'name' ) ); echo '</a>'; echo '<span class="sep"> | </span>'; // 自定义主题相关文本 printf( __( '基于Oblique主题修改,由%s维护', 'oblique' ), '你的名字/团队' ); } // 把新函数绑定到原来的钩子上 add_action( 'oblique_footer', 'oblique_footer_credits' );
额外提示:
- 如果你不需要支持多语言,可以直接写静态文本,去掉
__()和printf(),比如:function oblique_footer_credits() { echo '<a href="' . esc_url( home_url( '/' ) ) . '">我的个人博客</a>'; echo '<span class="sep"> | </span>'; echo '基于Oblique主题二次开发'; } - 记得保留
esc_url()来转义链接,避免安全风险; - 修改完成后,保存子主题的
functions.php,刷新网站就能看到修改后的 footer 版权信息了。
内容的提问来源于stack exchange,提问作者joeKwigley
相关产品推荐
相关产品推荐

