Woocommerce:我为什么要使用 do_action woocommerce_before_shop_loop_item 等?

Woocommerce: why should I use do_action woocommerce_before_shop_loop_item and etc?

我正在学习 woocommerce 并尝试循环显示产品列表。我使用了第一种方法,然后找到了另一种首选方法。结果是一样的,但是我不明白为什么我要用第二种方法而不是第一种更简单的方法?

第一种方法:

<div class="col-md-4 product simpleCart_shelfItem text-center">
<a href="<?php the_permalink(); ?>">
    <?php the_post_thumbnail(); ?>
</a>
<div class="mask">
    <a href="<?php the_permalink(); ?>">Quick View</a>
</div>
<a class="product_name" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

<?php if( $price_html = $product->get_price_html() ): ?>
    <p><a href="<?php echo esc_url($product->add_to_cart_url()); ?>" data-quantity="1" data-product_id="<?php echo esc_attr( $product->id ) ?>" data-product_sku="<?php echo esc_attr( $product->sku ) ?>" class="item_add <?php echo $class; ?>"><i></i> <span class="item_price"><?php echo $price_html ?></span></a></p>
<?php endif; ?>

第二种方法:

<div class="col-md-4 product simpleCart_shelfItem text-center">

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

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

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

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

如您所说,这两种方法都适合您,但是以正确的方式使用第二种方法有很大的优势:

如果 woocommerce 更新他们的代码或模板你不需要担心相应地更新你的代码并且首先以正确的方式使用第二种方法你不需要将模板复制到你的主题除非你需要做一些重大的改变,但在你的情况下,你只需要在商店循环项目之前添加 div 你应该这样做:

首先打开你的function.php

function MyCustomDiv (){
  echo '<div class= "col-md-4 product simpleCart_shelfItem text-center">';
  }

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

add_action ( 'woocommerce_before_shop_loop_item' ,  'MyCustomDiv');
add_action ( 'woocommerce_after_shop_loop_item' ,  'EndyCustomDiv');

为了进一步了解 Wordpres API,我建议阅读以下内容:

https://codex.wordpress.org/Plugin_API