首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WooCommerce短代码输出的顶部添加一个div

在WooCommerce短代码输出的顶部添加一个div
EN

Stack Overflow用户
提问于 2020-11-23 12:04:23
回答 1查看 432关注 0票数 2

我有一个由WooCommerce短代码生成的[products category='tshirts']产品列表。

我想在列表的顶部添加一个div,如下所示:

代码语言:javascript
复制
<div class='woocommerce'>
   <ul class='products'>
       <div class='test'>Hello</div> //This is the div I would like to add
       <li class='product'></li>
       <li class='product'></li>
       <li class='product'></li>
       ...

我试过以下几种方法,但仍然不起作用:

代码语言:javascript
复制
function action_woocommerce_shop_loop( $array, $int ) { 
    echo "<div class='test'>Hello</div>";
}; 
add_action( 'woocommerce_shop_loop', 'action_woocommerce_shop_loop', 10, 2 ); 

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-23 12:47:02

有几种选择是可能的:

1.重写可插拔的woocommerce_product_loop_start函数。

代码语言:javascript
复制
function woocommerce_product_loop_start( $echo = true ) {
    ob_start();

    wc_set_loop_prop( 'loop', 0 );

    wc_get_template( 'loop/loop-start.php' );
    
    // Loop prop name = products
    if ( wc_get_loop_prop('name') == 'products' ) {
        echo '<div class="test">Hello</div>';
    }

    $loop_start = apply_filters( 'woocommerce_product_loop_start', ob_get_clean() );

    if ( $echo ) {      
        // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
        echo $loop_start;
    } else {
        return $loop_start;
    }
}

2.覆盖循环/循环-start.php模板文件。可以通过将模板复制到yourtheme/woocommerce/loop/loop-start.php来重写该模板。

替换

代码语言:javascript
复制
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}
?>
<ul class="products columns-<?php echo esc_attr( wc_get_loop_prop( 'columns' ) ); ?>">

使用

代码语言:javascript
复制
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}
?>
<ul class="products columns-<?php echo esc_attr( wc_get_loop_prop( 'columns' ) ); ?>">
<?php
// Loop prop name = products
if ( wc_get_loop_prop('name') == 'products' ) {
    echo '<div class="test">Hello</div>';
}
?>

3.通过do_action( "woocommerce_shortcode_before_{$this->type}_loop", $this->attributes );实现的

代码语言:javascript
复制
function action_woocommerce_shortcode_before_products_loop( $atts ) {   
    echo "<div class='test'>Hello</div>";
}
add_action( 'woocommerce_shortcode_before_products_loop', 'action_woocommerce_shortcode_before_products_loop', 10, 1 );

结果:(然而,这并不是你想要的)

代码语言:javascript
复制
<div class='woocommerce'>
   <div class='test'>Hello</div> //This is the div I would like to add
   <ul class='products'>
       <li class='product'></li>
       <li class='product'></li>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64968080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档