Word Press主题定制器和子主题函数.php

时间:2019-06-22 作者:Shadow Crown

我已经下了一个很大的网来寻找答案,但似乎没有什么能找到正确的答案。

过程:我登录到我的站点/仪表板,我决定需要通过customiser编辑我的主题的一部分,所以我很直接地这样做了。。。

与此同时,我已经建立了我的儿童主题,对于新手来说似乎效果很好,并且已经大致了解了如何复制和编辑特定内容。php文件,如页脚、页眉等。。。并且,更改(模板到样式表)以加载子主题图像;然而

我想更改页脚中的社交媒体链接,在弄清楚定制者是如何工作的以及在哪里进行定制之前,我不得不挠头。php文件被存储,以便我可以更改和添加新的fab fa。图标图标。

问题::my child主题函数。php正在做它需要做的事情,我的页面也是如此,但是它的表单主题更新受到保护!不是我的新“customeriser”改变了,所以我必须回去一段时间后再改变它们。。。

我已经找到了customiser的目录位置,因此能够编辑它,但保护它不被更改是另一回事。

将customiser文件复制到子目录,然后加载(以及尝试过的include、stylesheet、url等变体)

require get_template_directory() . \'/inc/business-prime-customizer.php\'; 
它使我的网站崩溃。。。

那么我该如何指出我的子函数呢。新客户地址/文件中的php?

非常感谢,非常感谢

约翰

3 个回复
最合适的回答,由SO网友:Chetan Vaghela 整理而成

首先删除customizer的操作,然后使用新函数名添加您的操作。

in your child-theme functions.php

add_action( \'init\', \'remove_my_action\');
function remove_my_action() {
     remove_action(\'customize_register\', \'business_prime_settings_control\',10);
}
require_once dirname( __FILE__ ) . \'/inc/business-prime-customizer.php\';
in your child-theme/inc/business-prime-customizer.phpchange name of function and callback

function business_prime_settings_control_child($wp_customize) {
    # here your all customizer settings code
}
add_action(\'customize_register\', \'business_prime_settings_control_child\');
删除其他额外操作和声明的函数。否则您将得到:无法重新声明致命错误。

SO网友:Shadow Crown

我只是想对你的反馈表示感谢,没有boubt,这非常有帮助。否则,一个答案及其结果会比另一个更好。

只是我自己探索的一点反馈。。。

在浏览完网络之后,在理解这些东西方面似乎有一个小小的差距,尤其是指我们的新手/爱好者和我们的问题,同样如此,当答案可能有点长且不中肯时,所以感谢你在那里的耐心。

儿童主题创作似乎是一个没有实际意义的主题,基于父主题,很难确保它们正常工作。因此,基于您的耐心和明显的能力,需要继续努力,因此我将继续探索。

我有点认为,如果我选择投入那么多时间和金钱,或者委托他人,答案就在创建家长主题的发展过程中。那么,是什么起到了作用并产生了更大的结果:

正如预期的那样,为了减少对父文件的影响,我将所需的父文件复制到子主题中,然后根据建议添加了以下内容,并进行了一些调整。

子函数。php::

    add_action( \'init\', \'remove_my_customizer\');
    function remove_my_customizer() {
        remove_action(\'customize_register\', \'business_prime_settings_control\',100);
    }
        require_once dirname( __FILE__ ) . \'/inc/business-prime-customizer.php\';

    add_action( \'business_prime_settings_control_child\', \'business_prime_child_customizer\',10);
基于其他观点、我的父主题,为了增加稳定性,我添加了额外的add操作作为强制循环元素。然后,我替换了自定义程序的新子副本中的必要元素::

    function business_prime_settings_control_child($wp_customize) {
        # child.php customizer settings code
    }
    add_action(\'customize_register\', \'business_prime_settings_control_child\');
这种方法产生了更好的结果,因为我的自定义选项卡、编码或功能都没有丢失,它删除了特定的父主题营销横幅。

这种方法也适用于inc/职能部门。php文件也是::

    add_action( \'init\', \'remove_my_functions\');
    function remove_my_functions() {
        remove_action(\'functions_register\', \'business_prime_functions\',100);
}
        require_once dirname( __FILE__ ) . \'/inc/business-prime-functions.php\';

    add_action( \'business_prime_functions_child\', \'business_prime_child_functions\',10);
然而,我所说的“95%解决方案”是围绕父函数的。php文件::

    #require get_template_directory() . \'/inc/business-prime-customizer.php\';
    #require get_template_directory() . \'/inc/business-prime-functions.php\';
    require get_template_directory() . \'/inc/business-prime-sanitize-cb.php\';
因为子主题函数没有覆盖父主题的层次结构,所以在九个inc/parent中。在目录中的php文件中,我必须手动屏蔽两个必需的文件,以强制代码工作;我想在下一次更新时我必须再次这样做。

再次感谢您的时间,您一直是一位伟大的帮手,继续做好工作。

你好,约翰

SO网友:Mobeen Abdullah

这应该从子主题加载文件。

require get_stylesheet_directory() . \'/inc/business-prime-customizer.php\';
还应设置WP_DEBUG 变量至true 在里面wp-config.php 文件

如果要从父主题加载任何文件,则将使用

require get_template_directory() . \'/path_to_the_file.php\';
or
require get_template_directory_uri() . \'/path_to_the_css_file.css\';
如果要从当前子主题或活动主题加载文件。

require get_stylesheet_directory() . \'/path_to_the_file.php\';
or
require get_stylesheet_directory_uri() . \'/path_to_the_css_file.css\';

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register