插件子Wordpress

时间:2018-11-16 14:28:00

标签: php wordpress plugins woocommerce breadcrumbs

我想将下一行具体添加到woocommerce的文件之一:wp-content \ plugins \ woocommerce \ templates \ archive-product.php

<div class="breadcrumps-header"><?php if ( function_exists( 'yoast_breadcrumb' ) ) {yoast_breadcrumb();} ?></div>

但是在Woocommerce的下一个更新中,我将放弃修改。如何添加像插件chlid这样的东西?

2 个答案:

答案 0 :(得分:1)

如果您在主题中创建文件夹并将其命名为woocommerce并将所有文件从wp-content\plugins\woocommerce\templates\复制到wp-content\themes\yourthemename\woocommerce\,则可以对此文件进行更改,并且在下一次WooCommerce更新之后,它将不会丢失,只会显示您使用旧版本的模板(如果它们对同一原始文件进行了更改,则必须手动合并它们)。如果不是您自己的主题,请先创建子主题,不要将woocommerce文件夹放置到原始主题。

而且,最好将div放在if内,因为如果此功能不存在,您不想显示空的div,对吗?

<?php if ( function_exists( 'yoast_breadcrumb' ) ) { ?>
<div class="breadcrumps-header"><?php yoast_breadcrumb(); ?></div>
<?php } ?>

答案 1 :(得分:1)

如果查看该文件(https://github.com/woocommerce/woocommerce/blob/v2.2.3/templates/archive-product.php),则会看到许多不同的操作,具体取决于您希望插入该内容的位置。

例如,在顶部附近是这样:

    /**
     * woocommerce_before_main_content hook
     *
     * @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content)
     * @hooked woocommerce_breadcrumb - 20
     */
    do_action( 'woocommerce_before_main_content' );

此评论显示woocommerce自己的面包屑已被指定为此优先级20的动作。

如果您希望代码在此之后出现,则应该可以在主题的functions.php(或其他位置)中添加以下内容:

add_action('woocommerce_before_main_content', function() { ?>
<div class="breadcrumps-header">
    <?php if ( function_exists( 'yoast_breadcrumb' ) ) {yoast_breadcrumb();} ?>
</div>
<?php });

25是优先事项,确保您的代码将在woocommerce的woocommerce_breadcrumb函数之后执行。

该脚本中还有许多其他do_action,因此请选择一个最接近您想要的代码的脚本,并且只需进行少量试验即可获得所需的内容。