首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WooCommerce产品短代码两次输出class=“列-x”

WooCommerce产品短代码两次输出class=“列-x”
EN

Stack Overflow用户
提问于 2021-09-20 12:12:58
回答 1查看 284关注 0票数 1

只是在functions.php中对产品类别的短代码进行一个普通的调用,这让我很困惑。

我试图得到一个文本的columns-3,旁边是一个columns-9的产品。

我的代码:

代码语言:javascript
复制
<div class="content">
  <div class="columns-3">
    <?php $home_kit = get_term(30, 'product_cat', ARRAY_A); ?>
    <h2 class="section-title"><?php echo $home_kit['name']; ?></h2>
    <p><?php echo $home_kit['description']; ?></p>
    <a href=" <?php echo get_category_link($home_kit['term_id']); ?>">All Products &raquo;</a>
  </div>
  <?php echo do_shortcode('[product_category category="home-kits" per_page="3" orderby="price" order="desc" columns="9"]'); ?>
</div>

该短代码生成:

代码语言:javascript
复制
<div class="homepage-home-kit-category">
  <div class="content">
    <div class="columns-3">
     <h2...</h2>
     <p>...</p>
     <a ...</a>
    </div>
    <div class="woocommerce columns-9 ">
      <ul class="products columns-9">
        <li></li>
      </ul>
    </div>
  </div>
</div>

注意columns-9在生成的<div><ul>上的重复。

如果<div><ul>都有类columns-9,那么我得到了可用的3/4的3/4。

当然,类columns-9只需要在WooComerce <div><ul>上。

如何从<ul>元素中删除此添加项?

我对收到的答案表示感谢,这些答复都是有效的,而且运作良好。我认为我的根本问题是我看不到product_category短代码的有用性,因为它不忠实地遵守列参数。我一个人吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-20 12:47:59

有几个选项可以从columns-9元素中删除/修改<ul>

解决方案1 -通过使用过滤器挂钩。

代码语言:javascript
复制
function filter_woocommerce_product_loop_start( $loop_start ) {
    // New output
    $loop_start = '<ul class="products">';
    
    return $loop_start;
}
add_filter( 'woocommerce_product_loop_start', 'filter_woocommerce_product_loop_start', 10, 1 );

解决方案2 -覆盖模板文件。

可以覆盖模板/循环/循环-start.php模板文件。

  • 可以通过将模板复制到yourtheme/woocommerce/loop/loop-start.php.来重写该模板。

替换

代码语言:javascript
复制
<ul class="products columns-<?php echo esc_attr( wc_get_loop_prop( 'columns' ) ); ?>">

使用

代码语言:javascript
复制
<ul class="products">

解决方案3 -覆盖现有函数。

由于woocommerce_product_loop_start使用function_exits,请参见第1110-1134 @Version2.5.0行上的:包含/wc-模板-Functions.php

更多信息:存在于Wordpress中

代码语言:javascript
复制
/**
 * Output the start of a product loop. By default this is a UL.
 *
 * @param bool $echo Should echo?.
 * @return string
 */
function woocommerce_product_loop_start( $echo = true ) {
    $loop_start = '<ul class="products">';

    if ( $echo ) {
        // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
        echo $loop_start;
    } else {
        return $loop_start;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69254233

复制
相关文章

相似问题

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