WooCommerce 默认情况下产品列表页只调用了一张产品的缩略图,如何增加一张自定义的产品图片,来使每个产品拥有两个图片调用呢?
在模板文件中找到 woocommerce 的 content-product.php 文件,其中有一行代码 do_action( ‘woocommerce_before_shop_loop_item_title’ ); 这是一个用于触发在商品标题之前显示内容的动作钩子(action hook),它包含了产品缩略图的调用。
如果要再继续添加另一张图片,可以创建一个自定义的回调函数,并将其挂钩到该动作上。在这个自定义的回调函数中,您可以输出您想要显示的自定义图像。
以下是一个简单的示例,展示如何实现这一点:
function custom_content_before_product_title() {
// 添加您自定义的图像路径
$custom_image_url = 'URL_TO_YOUR_CUSTOM_IMAGE';
// 输出自定义图像的HTML
echo '<div class="custom-content">';
echo '<img src="' . esc_url($custom_image_url) . '" alt="Custom Image">';
echo '</div>';
}
add_action( 'woocommerce_before_shop_loop_item_title', 'custom_content_before_product_title', 10 );
在这个例子中,您需要将URL_TO_YOUR_CUSTOM_IMAGE替换为您实际自定义图像的URL。这个函数将在每个商品标题之前输出一个包含自定义图像的
元素。 请注意,esc_url函数用于对URL进行转义,以确保它是安全的。
如果要使用文章的自定义字段(custom field)thumbHover 来设置自定义图像的URL,可以使用 WordPress的 内置函数 get_post_meta 来获取该自定义字段的值。以下是一个修改过的代码示例:
function custom_content_before_product_title() {
// 获取当前商品的ID
global $product;
$product_id = $product->get_id();
// 获取自定义字段 thumbHover 的值
$custom_image_url = get_post_meta( $product_id, 'thumbHover', true );
// 输出自定义图像的HTML
if ( ! empty( $custom_image_url ) ) {
echo '<div class="custom-content">';
echo '<img src="' . esc_url( $custom_image_url ) . '" alt="Custom Image">';
echo '</div>';
}
}
add_action( 'woocommerce_before_shop_loop_item_title', 'custom_content_before_product_title', 10 );
在这个示例中,使用了 get_post_meta 函数,该函数接受三个参数:文章ID(或产品ID)、自定义字段的名称(thumbHover)以及一个可选的布尔值,用于指示是否只返回单个值。如果您的自定义字段只存储一个值,设置为 true,否则设置为 false。
请确保在添加这个代码之前,您的商品或文章已经有了 thumbHover 这个自定义字段,并且填写了正确的图像URL。如果自定义字段不存在或者没有值,代码中的条件判断将确保不输出空的HTML。