php - 当 WooCommerce 购物车和结帐页面上购物车中的特定产品时更改“总计”文本
问题描述
如果购物车中有特定的产品 ID,我希望更改 WooCommerce 购物车和结帐页面(见附图)上的文本“总计”。
我尝试在 javascript 中实现这一点,但它只适用于所有人:
<script type="text/javascript">
(function($) {
$(document).ready(function() {
$('#your_my_order_element_id').html('Your New string');
//$('.your_my_order_element_class').html('Your New string');
});
})(jQuery);
</script>
有人可以将我推向正确的方向吗?任何帮助将不胜感激!
解决方案
要更改购物车和结帐页面上的总文本,您可以编辑模板文件。可以在templates/cart/cart-totals.php 中找到
这个模板可以通过复制它来覆盖yourtheme/woocommerce/cart/cart-totals.php.
所以替换(第 97 - 100 行 - @version 2.3.6)
<tr class="order-total">
<th><?php esc_html_e( 'Total', 'woocommerce' ); ?></th>
<td data-title="<?php esc_attr_e( 'Total', 'woocommerce' ); ?>"><?php wc_cart_totals_order_total_html(); ?></td>
</tr>
和
<tr class="order-total">
<?php
// The targeted product ids, multiple product IDs can be entered, separated by a comma
$targeted_ids = array( 30, 815 );
// Flag, false by default
$flag = false;
// Loop through cart items
foreach ( WC()->cart->get_cart() as $cart_item ) {
if ( array_intersect( $targeted_ids, array( $cart_item['product_id'], $cart_item['variation_id'] ) ) ) {
$flag = true;
break;
}
}
// True
if ( $flag ) {
?>
<th><?php esc_html_e( 'Authorize', 'woocommerce' ); ?></th>
<td data-title="<?php esc_attr_e( 'Authorize', 'woocommerce' ); ?>"><?php wc_cart_totals_order_total_html(); ?></td>
<?php
} else {
?>
<th><?php esc_html_e( 'Total', 'woocommerce' ); ?></th>
<td data-title="<?php esc_attr_e( 'Total', 'woocommerce' ); ?>"><?php wc_cart_totals_order_total_html(); ?></td>
<?php
}
?>
</tr>
或者,不要覆盖模板文件,而是使用gettext()过滤器。
代码进入functions.php
活动子主题(或活动主题)的文件中
function filter_gettext( $translated, $original_text, $domain ) {
// Is admin
if ( is_admin() ) return $translated;
// No match
if ( $original_text != 'Total' ) return $translated;
// The targeted product ids, multiple product IDs can be entered, separated by a comma
$targeted_ids = array( 30, 815 );
// Flag, false by default
$flag = false;
// WC Cart
if ( WC()->cart ) {
// Loop through cart items
foreach ( WC()->cart->get_cart() as $cart_item ) {
if ( array_intersect( $targeted_ids, array( $cart_item['product_id'], $cart_item['variation_id'] ) ) ) {
$flag = true;
break;
}
}
}
// True
if ( $flag ) {
$translated = __( 'Authorize', 'woocommerce' );
}
return $translated;
}
add_filter( 'gettext', 'filter_gettext', 10, 3 );
推荐阅读
- python - 如何在数据框中将 -0.0 值替换为 0.0 值?
- openshift - 部署在 OpenShift 中的 ansible-tower 在哪里存储 git 存储库克隆?
- javascript - Discord 帐户创建日期问题 / discord.js
- autodesk-forge - 如何在 Autodesk Forge Viewer 中获取当前文档节点?
- python - 谷歌 colab 在训练大数据模型时使用了所有可用的 RAM
- java - 对于 ZonedDateTime 字段,Protostuff 库未按预期工作
- c# - 如何呼叫代表
- javascript - 如何使用 foreach 输入[type=submit]?
- amazon-web-services - 将 s3 文件下载限制为 cognito(首选)中经过身份验证的用户或任何人。他们应该只能查看但不能下载
- reactjs - 动画存在退出不工作帧运动