woocommerce - WooCommerce:如何在变体标题(标签)和下拉选择器之间添加自定义文本
问题描述
我们想在产品变体的标题/标签和下拉选择器之间添加(固定)自定义文本,如下所示。
我们已经尝试过以下代码
add_filter( 'woocommerce_attribute_label', 'custom_attribute_label', 10, 3 );
function custom_attribute_label( $label, $name, $product ) {
$taxonomy = 'pa_'.$name;
if( $taxonomy == 'pa_bodenankertyp' )
$label .= '<div class="custom-label">' . __('MY custom TEXT', 'woocommerce') . '</div>';
return $label;
}
来自这篇文章 在 WooCommerce 中的特定产品属性标签旁边添加自定义文本
但它不起作用。
任何想法或提示有什么问题都值得赞赏!
解决方案
我不推荐使用这个钩子,因为你在多个地方改变了它——你不想做任何改变的地方。我建议覆盖特定的 WooCommerce 模板。为此,请转到您的子主题并创建以下文件夹结构:
你的孩子主题/woocommerce/单一产品/添加到购物车/
现在您需要在其中创建一个名为 PHP 的文件variable.php
,并在其中粘贴以下代码:
<?php
/**
* Variable product add to cart
*
* This template can be overridden by copying it to yourtheme/woocommerce/single-product/add-to-cart/variable.php.
*
* HOWEVER, on occasion WooCommerce will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.
*
* @see https://docs.woocommerce.com/document/template-structure/
* @package WooCommerce\Templates
* @version 3.5.5
*/
defined( 'ABSPATH' ) || exit;
global $product;
$attribute_keys = array_keys( $attributes );
$variations_json = wp_json_encode( $available_variations );
$variations_attr = function_exists( 'wc_esc_json' ) ? wc_esc_json( $variations_json ) : _wp_specialchars( $variations_json, ENT_QUOTES, 'UTF-8', true );
do_action( 'woocommerce_before_add_to_cart_form' ); ?>
<form class="variations_form cart" action="<?php echo esc_url( apply_filters( 'woocommerce_add_to_cart_form_action', $product->get_permalink() ) ); ?>" method="post" enctype='multipart/form-data' data-product_id="<?php echo absint( $product->get_id() ); ?>" data-product_variations="<?php echo $variations_attr; // WPCS: XSS ok. ?>">
<?php do_action( 'woocommerce_before_variations_form' ); ?>
<?php if ( empty( $available_variations ) && false !== $available_variations ) : ?>
<p class="stock out-of-stock"><?php echo esc_html( apply_filters( 'woocommerce_out_of_stock_message', __( 'This product is currently out of stock and unavailable.', 'woocommerce' ) ) ); ?></p>
<?php else : ?>
<table class="variations" cellspacing="0">
<tbody>
<?php foreach ( $attributes as $attribute_name => $options ) : ?>
<tr>
<td class="label">
<label for="<?php echo esc_attr( sanitize_title( $attribute_name ) ); ?>"><?php echo wc_attribute_label( $attribute_name ); // WPCS: XSS ok. ?></label>
<div class="custom-label"><?= __('MY custom TEXT', 'woocommerce') ?></div>
</td>
<td class="value">
<?php
wc_dropdown_variation_attribute_options(
array(
'options' => $options,
'attribute' => $attribute_name,
'product' => $product,
)
);
echo end( $attribute_keys ) === $attribute_name ? wp_kses_post( apply_filters( 'woocommerce_reset_variations_link', '<a class="reset_variations" href="#">' . esc_html__( 'Clear', 'woocommerce' ) . '</a>' ) ) : '';
?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<div class="single_variation_wrap">
<?php
/**
* Hook: woocommerce_before_single_variation.
*/
do_action( 'woocommerce_before_single_variation' );
/**
* Hook: woocommerce_single_variation. Used to output the cart button and placeholder for variation data.
*
* @since 2.4.0
* @hooked woocommerce_single_variation - 10 Empty div for variation data.
* @hooked woocommerce_single_variation_add_to_cart_button - 20 Qty and cart button.
*/
do_action( 'woocommerce_single_variation' );
/**
* Hook: woocommerce_after_single_variation.
*/
do_action( 'woocommerce_after_single_variation' );
?>
</div>
<?php endif; ?>
<?php do_action( 'woocommerce_after_variations_form' ); ?>
</form>
<?php
do_action( 'woocommerce_after_add_to_cart_form' );
在此代码中,您将找到您的div
. 如果您需要任何检查,只需将它们放在您的div
. 在你的情况下,我会检查变量$attribute_name
。
推荐阅读
- wordpress - WP pagination in rest api
- python - Given an array find element pairs whose sum is equal to the given sum and return the sum of their indices
- ruby - How to get commit history of users in gitlab in rails
- web-deployment - 我无法追踪浏览器显示的错误
- python - Gmail 发送的电子邮件提取
- java - 如何将通过spring-boot下拉列表获得的数据保存在数据库中?
- outlook-addin - 发送电子邮件后,ItemId 无效
- java - 如何获取图像内文本的位置并在图像被触摸时突出显示它的位置
- python-3.x - Boto3 generate_presigned_url, SignatureDoesNotMatch 错误
- ruby-on-rails - 打开 Heroku 时出现问题,但网页只是出现“您要查找的页面不存在”的错误。