Woocommerce 如何在同一行上连接之前和之后的商店循环挂钩
Woocommerce how to concatenate Before and After shop loop hooks on the same line
我正在使用 woocommerce 开发 e-commerce 网站。
我正在使用挂钩和 content-product.php
文件在商店类别和所有位置中设计产品卡片(第二个容器,其中包括产品名称、价格等)。
我的 product.php
文件代码是
<div class="second-container">
<div class="product_info">
<?php do_action( 'woocommerce_before_shop_loop_item_title'); ?>
<a href="<?php echo get_the_permalink() ?>" class="title"><?php do_action( 'woocommerce_shop_loop_item_title' ); ?></a>
<?php do_action( 'woocommerce_after_shop_loop_item_title' ); ?>
这个要显示名字。
对于我的第一个条目,这是一个名为“Brand”的自定义属性,我在 functions.php
文件中使用了以下函数。
add_action('woocommerce_shop_loop_item_title', 'display_custom_product_attributes_on_loop', 5 );
function display_custom_product_attributes_on_loop() {
global $product;
$value2 = $product->get_attribute('Brand');
if ( ! empty($value2) ) {
echo '<div class="items" style=";"><p>';
$attributes = array(); // Initializing
if ( ! empty($value2) ) {
$attributes[] = __("") . ' ' . $value2;
}
echo implode( '', $attributes ) . '</p></div>';
}
}
无论如何我都很难做到这一点,因为我对 php 一无所知,它工作正常但有一个问题,那就是两个钩子之间有一些间距见图:
where brand=阁楼
title = 男士黑色高领毛衣 2600
我尝试使用所有可用的容器 top/bottom 填充来操纵 css 中的填充,但没能去除间距。
我正在寻求帮助以执行以下操作之一
1- 将品牌和标题连接在同一行中,使品牌点击永久链接到属性的全局过滤器,名称成为产品本身的永久链接(推荐 100%)
或
2- 将品牌和标题连接在同一行中,为它们提供产品的永久链接(推荐 80%)
或
3-减少第一行和第二行之间的间距。
我使用Swoof插件进行过滤
非常感谢您的帮助。
您可以使用 the_title
过滤器挂钩来操纵标题。还使用一些条件检查来仅操作商店页面上的产品名称。所以我会做这样的事情:
add_filter('the_title', 'display_custom_product_attributes_on_loop', 20, 2);
function display_custom_product_attributes_on_loop($the_title, $id)
{
global $product;
if (is_shop() && get_post_type($id) == 'product') :
$value2 = $product->get_attribute('Brand');
if ( ! empty($value2) ):
$the_title = $value2 . ' ' . '<a href="' . get_the_permalink() . '">' . $the_title . '</a>';
endif;
endif;
return $the_title;
}
这将输出 attribute value
+ your product title
即 a link
到 single product page
.
或
add_filter('the_title', 'display_custom_product_attributes_on_loop', 20, 2);
function display_custom_product_attributes_on_loop($the_title, $id)
{
global $product;
if (is_shop() && get_post_type($id) == 'product') :
$value2 = $product->get_attribute('Brand');
if ( ! empty($value2) ):
$the_title = $the_title . ' ' . '<a href="' . get_the_permalink() . '">' . $value2 . '</a>';
endif;
endif;
return $the_title;
}
这将输出 the product title
+ your attribute value
即 a link
到 single product page
.
我正在使用 woocommerce 开发 e-commerce 网站。
我正在使用挂钩和 content-product.php
文件在商店类别和所有位置中设计产品卡片(第二个容器,其中包括产品名称、价格等)。
我的 product.php
文件代码是
<div class="second-container">
<div class="product_info">
<?php do_action( 'woocommerce_before_shop_loop_item_title'); ?>
<a href="<?php echo get_the_permalink() ?>" class="title"><?php do_action( 'woocommerce_shop_loop_item_title' ); ?></a>
<?php do_action( 'woocommerce_after_shop_loop_item_title' ); ?>
这个要显示名字。
对于我的第一个条目,这是一个名为“Brand”的自定义属性,我在 functions.php
文件中使用了以下函数。
add_action('woocommerce_shop_loop_item_title', 'display_custom_product_attributes_on_loop', 5 );
function display_custom_product_attributes_on_loop() {
global $product;
$value2 = $product->get_attribute('Brand');
if ( ! empty($value2) ) {
echo '<div class="items" style=";"><p>';
$attributes = array(); // Initializing
if ( ! empty($value2) ) {
$attributes[] = __("") . ' ' . $value2;
}
echo implode( '', $attributes ) . '</p></div>';
}
}
无论如何我都很难做到这一点,因为我对 php 一无所知,它工作正常但有一个问题,那就是两个钩子之间有一些间距见图:
where brand=阁楼 title = 男士黑色高领毛衣 2600
我尝试使用所有可用的容器 top/bottom 填充来操纵 css 中的填充,但没能去除间距。
我正在寻求帮助以执行以下操作之一
1- 将品牌和标题连接在同一行中,使品牌点击永久链接到属性的全局过滤器,名称成为产品本身的永久链接(推荐 100%)
或
2- 将品牌和标题连接在同一行中,为它们提供产品的永久链接(推荐 80%)
或
3-减少第一行和第二行之间的间距。
我使用Swoof插件进行过滤
非常感谢您的帮助。
您可以使用 the_title
过滤器挂钩来操纵标题。还使用一些条件检查来仅操作商店页面上的产品名称。所以我会做这样的事情:
add_filter('the_title', 'display_custom_product_attributes_on_loop', 20, 2);
function display_custom_product_attributes_on_loop($the_title, $id)
{
global $product;
if (is_shop() && get_post_type($id) == 'product') :
$value2 = $product->get_attribute('Brand');
if ( ! empty($value2) ):
$the_title = $value2 . ' ' . '<a href="' . get_the_permalink() . '">' . $the_title . '</a>';
endif;
endif;
return $the_title;
}
这将输出 attribute value
+ your product title
即 a link
到 single product page
.
或
add_filter('the_title', 'display_custom_product_attributes_on_loop', 20, 2);
function display_custom_product_attributes_on_loop($the_title, $id)
{
global $product;
if (is_shop() && get_post_type($id) == 'product') :
$value2 = $product->get_attribute('Brand');
if ( ! empty($value2) ):
$the_title = $the_title . ' ' . '<a href="' . get_the_permalink() . '">' . $value2 . '</a>';
endif;
endif;
return $the_title;
}
这将输出 the product title
+ your attribute value
即 a link
到 single product page
.