自定义操作在WooCommerce中不起作用

时间:2015-10-01 作者:joaogdesigner

我在woocommerce中创建了一个自定义操作,以便重写breadcrumbs函数并将其放在html的另一个位置,但它不起作用。

首先,我删除了原来的Woocommerce面包屑:

remove_action( \'woocommerce_before_main_content\', \'woocommerce_breadcrumb\', 20, 0);
之后,我在主题函数中添加了一个自定义操作。php:

add_action(\'woo_breadcrumbs\', \'woocommerce_breadcrumb\', 20, 0);
和我的面包屑自定义功能:

function woocommerce_breadcrumb( $args = array() ) {
    $defaults = apply_filters( \'woocommerce_breadcrumb_defaults\', array(
        \'delimiter\'   => \' / \',
        \'wrap_before\' => \'<nav class="woocommerce-breadcrumb" \' . ( is_single() ? \'itemprop="breadcrumb"\' : \'\' ) . \'>\',
        \'wrap_after\'  => \'</nav>\',
        \'before\'      => \'\',
        \'after\'       => \'\',
        \'home\'        => _x( \'Home\', \'breadcrumb\', \'woocommerce\' ),
    ) );
    $args = wp_parse_args( $args, $defaults );
    wc_get_template( \'global/breadcrumb.php\', $args );
}
最后,我把这个放在我的标题上。php:

<?php do_action(\'woo_breadcrumbs\'); ?>
我不知道这里出了什么问题。有什么帮助吗??

1 个回复
SO网友:dswebsme

看起来您对remove\\u action()的调用有太多参数。

https://codex.wordpress.org/Function_Reference/remove_action

此外,您对add\\u action()的调用设置为允许0个参数,但您的woocommerce\\u breadcrumb()定义需要一个参数,因此您需要修复该不匹配。

https://codex.wordpress.org/Function_Reference/add_action

我没有在本地运行代码,但这些是我看到的唯一问题。我希望这有助于解决问题。

旁注:为了让我自己安心,我喜欢给我的函数取唯一的名称,而不是重用我要重写的函数的名称。并不是所有的软件开发人员都将其定义封装在function\\u exists()检查中,所以我试图在这里谨慎行事。WooCommerce确实使用functions\\u exists()检查,因此在这里使用这种方法是安全的。

相关推荐