WordPress子主题无法覆盖/Inc/Structure/header.php中的父导航菜单

时间:2018-07-30 作者:Haydn Kwan

我对Wordpress相当陌生。我正在使用带有默认导航菜单的shop isle主题。我试图用一个别致的“Ubermenu”插件来覆盖它,但默认的折叠符号会一直覆盖该插件。

主题标头从目录shop isle/inc/structure/header加载。php。

我将整个目录复制到我的子主题目录,并在/header中进行了下面的编辑。php,但只有当我将其添加到父主题中的“structure”文件夹而不是子主题中时,它才起作用。

示例1

<?php if( function_exists( ‘ubermenu’ ) ): ?>
  <?php ubermenu( \'main\' , array( \'theme_location\' => \'primary\' ) ); ?>
<?php else: ?>
      <div class="header-menu-wrap">
        <div class="collapse navbar-collapse" id="custom-collapse">
          <?php
            wp_nav_menu(
                 array(
                    \'theme_location\' => \'primary\',
                    \'container\'      => false,
                    \'menu_class\'     => \'nav navbar-nav navbar-right\',
                       )
                    );
                        ?>
                 </div>
              </div>
<?php endif; ?>
我尝试取消挂接加载标题的函数,但同时删除了标题!

主收割台。php调用shop-isle/inc/structure/header.php. 使用

<?php do_action( \'shop_isle_header\' ); ?>
挂钩。php位于shop-isle/inc/structure/hooks.php 已使用注册回调函数

add_action( \'shop_isle_header\', \'shop_isle_primary_navigation\',   50 );
我已将所有文件复制到我的子主题,并保持目录结构不变,但它不会覆盖父文件。

如何在“函数”中添加上述代码(示例1)。php“在我的孩子主题中更新”shop-isle/inc/structure/header。php’?

2 个回复
SO网友:Alex Sancho

您需要复制到您的孩子并编辑包含文件的功能,可能是“shop\\u isle\\u primary\\u navigation”,以更改文件所在的路径。Wordpress仅从子级自动加载默认文件,即模板层次结构中定义的文件。您可以在以下网站了解更多信息:https://developer.wordpress.org/themes/basics/template-hierarchy/

SO网友:Jacob Peattie

不能通过将任意主题文件添加到子主题来替换它们。这只适用于template hierarchy 以及父主题明确允许替换的文件。请参见my answer to a similar recent question 有关儿童主题如何工作的更多信息。

要想弄清楚如何做你想做的事情,你应该联系主题作者,但根据你到目前为止发布的内容,可以说你需要先使用remove_action() 与最初用于挂钩的参数相同:

remove_action( \'shop_isle_header\', \'shop_isle_primary_navigation\', 50 );
然后在子主题中,您需要在子主题的函数中创建一个新的函数。php文件,用于输出所需的标题:

function wpse_309907_primary_navigation() {
    if ( function_exists( ‘ubermenu’ ) ): ?>
        <?php ubermenu( \'main\' , array( \'theme_location\' => \'primary\' ) ); ?>
    <?php else: ?>
        <div class="header-menu-wrap">
            <div class="collapse navbar-collapse" id="custom-collapse">
                <?php
                wp_nav_menu(
                array(
                \'theme_location\' => \'primary\',
                \'container\'      => false,
                \'menu_class\'     => \'nav navbar-nav navbar-right\',
                )
                );
                ?>
            </div>
        </div>
    <?php endif;
}
然后将其挂在原来的位置:

add_action( \'shop_isle_header\', \'wpse_309907_primary_navigation\', 50 );

结束

相关推荐

我想创建子主题,但已经编辑了父主题的css文件和一些php文件

我下载了一个WP主题并编辑了一些php 文件和css 我喜欢的文件(尝试和错误),并一直在我的网站上使用,但没有创建子主题。这意味着我对父主题所做的任何更新都将覆盖我所做的更改,因此到目前为止我还没有做任何更新。现在是否可以创建子主题,以某种方式保留新编辑的php 文件和css 通过将它们放在我的子主题文件夹中(创建某种指针css 文件以使子级覆盖父级),然后更新原始父级?如果是,如何?或者我应该完全放弃主题,寻找一个新的主题,并在编辑之前立即创建一个子主题吗?