如何修改woocommerce_before_cart动作

Ken*_*nce 3 php wordpress twitter-bootstrap woocommerce

我正在尝试将我的woocommerce购物车模板显示为完整的12列布局.

现有布局使用bootstrap的col-sm-8列.我需要将它改为col-sm-12.

<main class="main col-sm-8" role="main">
  <div class="page-header">
   <h1>Cart</h1>
  </div>

<div class="woocommerce">...</div>

<div class="woocommerce-info">...</div>

<div class="cart-collaterals">
    // shipping code etc.
</div>
</main>
Run Code Online (Sandbox Code Playgroud)

我查看了此处显示的相关woo-templates ,并将cart.php模板复制到我的主题中以覆盖.但是,看起来我需要修改woocommerce_before_cart操作以更改<main>布局并插入col-sm-12类.我在这个woocommerce页面上找到了相关的操作.

我可以从cart.php模板中看到在<form>元素之前调用的动作,如下所示:

global $woocommerce;

wc_print_notices();

do_action( 'woocommerce_before_cart' ); ?>

<form action="<?php echo esc_url( WC()->cart->get_cart_url() ); ?>" method="post">

<?php do_action( 'woocommerce_before_cart_table' ); ?>

<table class="shop_table cart" cellspacing="0">enter code here
Run Code Online (Sandbox Code Playgroud)

我是php的新手,我的问题是如何修改此操作的输出,以便将布局更改为12列?

Cai*_*ner 8

Woocommerce将cart.php中的内容插入到主题根目录中的page.php中.:)


Luk*_*son 6

看起来 woocommerce 不会为“woocommerce_before_cart”或“woocommerce_before_cart_table”创建动作挂钩,您可以使用 has_action() 进行检查。它们似乎是作为开发人员扩展的建议。从cart.php 中删除它们应该是正确的(尽管开发人员可能会将它们放在那里用于未来的版本或流行的插件),或者如果您想使用它们,请将其添加到您的主题functions.php 中。

add_action('woocommerce_before_cart', 'sample', 1);

function sample() {
    echo '<h1>hello</h1>';
}
Run Code Online (Sandbox Code Playgroud)

编辑:只需阅读您对上一个答案的回复,看起来您正在使用的主题可能正在它的 functions.php 文件中创建钩子,寻找

add_action('woo_commerce_before_cart', 'sample', X);
Run Code Online (Sandbox Code Playgroud)

'sample' 是被调用函数的名称,X 是它的优先级。您可以修改该函数的输出或向钩子添加另一个函数。