只是在functions.php中对产品类别的短代码进行一个普通的调用,这让我很困惑。
我试图得到一个文本的columns-3,旁边是一个columns-9的产品。
我的代码:
<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 »</a>
</div>
<?php echo do_shortcode('[product_category category="home-kits" per_page="3" orderby="price" order="desc" columns="9"]'); ?>
</div>该短代码生成:
<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短代码的有用性,因为它不忠实地遵守列参数。我一个人吗?
发布于 2021-09-20 12:47:59
有几个选项可以从columns-9元素中删除/修改<ul>类
解决方案1 -通过使用过滤器挂钩。
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.来重写该模板。替换
<ul class="products columns-<?php echo esc_attr( wc_get_loop_prop( 'columns' ) ); ?>">使用
<ul class="products">解决方案3 -覆盖现有函数。
由于woocommerce_product_loop_start使用function_exits,请参见第1110-1134 @Version2.5.0行上的:包含/wc-模板-Functions.php
更多信息:存在于Wordpress中
/**
* 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;
}
}https://stackoverflow.com/questions/69254233
复制相似问题