有没有办法在函数文件夹中实现与get_template_part()类似的东西?

时间:2017-08-29 11:30:57

标签: php wordpress woocommerce

我想知道是否有办法在<?php get_template_part(); ?>文件中执行与functions.php类似的操作 - 我特别希望使用此代码来定位Woocommerce。

我网站的大多数网页都使用默认模板中的以下代码 - page.php

<?php get_header(); ?>

<?php get_template_part('includes/side-menu'); ?>

<div class="content">

    <?php if (have_posts()) : ?>

        <?php while (have_posts()) : the_post(); ?>

            <?php the_content(); ?>

        <?php endwhile; ?>

    <?php endif; ?>

</div>

<?php get_footer(); ?>

我已经设置了我的主题(自定义内置)以与Woocommerce插件一起使用,但是我的主题中的侧边菜单存在问题,该菜单位于我的页眉和页脚的单独文件夹中。 Woocommerce使用自己的模板生成其页面,即产品档案和产品页面等。默认情况下,这些模板中的每一个都调用我的主题页眉和页脚,但是他们不会调用我的菜单,所以当我按下按钮在其中一个页面上打开它,它不在那里。

我已经使用插件作者推荐的方法将Woocommerce设置为与我的主题兼容。我已将以下代码添加到functions.php

remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10);
remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10);


add_action('woocommerce_before_main_content', 'my_theme_wrapper_start', 10);
add_action('woocommerce_after_main_content', 'my_theme_wrapper_end', 10);

function my_theme_wrapper_start() {
  echo '<div id="woocommerce-content" class="content"> <div class="container">';
}

function my_theme_wrapper_end() {
  echo '</div> </div>';
}

此代码允许我在Woocommerce模板中添加div来包装我的内容。我想知道是否有办法更改此代码,以便我可以在Woocommerce模板页面上调用我的菜单模板side-menu.php

还有另一种方法可以做到这一点,但我试图避免使用它,因为从长远来看它涉及更多的工作。可以通过将插件模板文件复制到我的主题中的文件夹中来覆盖插件模板文件,并添加<?php get_template_part(); ?>代码来调用我的侧边菜单。

唯一的问题是,这意味着每次对插件进行重大更新时,我都必须更新这些覆盖文件,以包含随Woocommerce更新发布的新代码,因为它不会自动更新它们。

如果有任何方式在整个Woocommerce页面中调用侧边菜单作为一揽子操作,就像上面的代码添加HTML一样,这将是一个更容易的解决方案。

我很想知道这是否可行。

0 个答案:

没有答案