我正在构建一个 WooCommerce 网站并对其进行自定义,从互联网库复制并粘贴代码。
我已成功在 woocommerce 产品中添加“自定义价格和自定义文本”,以便将它们翻译成不同的语言。这是产品页面的外观:https://www.primacent.de/de/product/woo-album-3-2
这是我的代码
functions.php
:
//New Price
add_action('woocommerce_product_options_pricing','custom_unit_price');
function custom_unit_price() {
woocommerce_wp_text_input( array( 'id' => '_unit_price', 'class' => 'wc_input_price short', 'label' => __( 'Unit Price', 'woocommerce' ) . ' ('.get_woocommerce_currency_symbol().')', 'type' => 'number', 'desc_tip' => 'true','description' => __( 'Enter the unit price if you want to show this price type.', 'woocommerce' ), 'custom_attributes' => array(
'step' => 'any',
'min' => '0'
) ) );
}
add_action('woocommerce_process_product_meta_simple', 'save_custom_unit_price');
function save_custom_unit_price($post_id) {
global $wpdb, $woocommerce, $woocommerce_errors;
update_post_meta( $post_id, '_unit_price', stripslashes( $_POST['_unit_price'] ) );
}
// Text Field for unit measurement
add_action('woocommerce_product_options_pricing','custom_unit_measurement');
function custom_unit_measurement() {
woocommerce_wp_text_input ( array('id' => '_unit_measurement', 'label' => __( 'Unit Measurement', 'woocommerce' ), 'placeholder' => 'i.e: pro Stück','desc_tip' => 'true','description' => __( 'Enter the unit measurement in your language. If you want to show price per unit, this field must be filled', 'woocommerce' )
)
);
}
add_action('woocommerce_process_product_meta_simple', 'save_custom_unit_measurement');
function save_custom_unit_measurement($post_id) {
global $wpdb, $woocommerce, $woocommerce_errors;
update_post_meta( $post_id, '_unit_measurement', stripslashes( $_POST['_unit_measurement'] ) );
}
// only copy the opening php tag if needed
// Change the shop / product prices if a _unit_price is set
function sv_change_product_html( $price_html, $product ) {
$_unit_price = get_post_meta( $product->id, '_unit_price', true );
if ( ! empty( $_unit_price ) ) {
$price_html = '<span class="amount">' . wc_price( $_unit_price ). ' </span>';
echo $_unit_measurement = get_post_meta( $product->id, '_unit_measurement', true );echo'<br />';
}
return $price_html;
}
add_filter( 'woocommerce_get_price_html', 'sv_change_product_html', 10, 2 );
问题是我想要单价(_unit_measurement
)后面的
单位计量(
_unit_price
)来替换连字符“-”。
由于某些原因,我无法将第二个元值放入
<span>
换行中。
请帮助我。我怎样才能实现这个目标?
谢谢!
您只需在返回价格之前使用 <span>
运算符将
.=
变量连接到价格后面的字符串内(例如,在
$price_html
标签中),即可将此unitmeasurement 值连接起来。
所以你的代码将是:
//New Price
add_action( 'woocommerce_product_options_pricing' ,'custom_unit_price' );
function custom_unit_price() {
woocommerce_wp_text_input( array(
'id' => '_unit_price',
'class' => 'wc_input_price short',
'label' => __( 'Unit Price', 'woocommerce' ) . ' ('.get_woocommerce_currency_symbol().')',
'type' => 'number',
'desc_tip' => 'true',
'description' => __( 'Enter the unit price if you want to show this price type.', 'woocommerce' ),
'custom_attributes' => array(
'step' => 'any',
'min' => '0'
)
));
}
add_action('woocommerce_process_product_meta_simple', 'save_custom_unit_price');
function save_custom_unit_price($post_id) {
global $wpdb, $woocommerce, $woocommerce_errors;
update_post_meta( $post_id, '_unit_price', stripslashes( $_POST['_unit_price'] ) );
}
// Text Field for unit measurement
add_action('woocommerce_product_options_pricing','custom_unit_measurement');
function custom_unit_measurement() {
woocommerce_wp_text_input ( array(
'id' => '_unit_measurement',
'label' => __( 'Unit Measurement', 'woocommerce' ),
'placeholder' => 'i.e: pro Stück',
'desc_tip' => 'true',
'description' => __( 'Enter the unit measurement in your language. If you want to show price per unit, this field must be filled', 'woocommerce' )
));
}
add_action('woocommerce_process_product_meta_simple', 'save_custom_unit_measurement');
function save_custom_unit_measurement($post_id) {
global $wpdb, $woocommerce, $woocommerce_errors;
update_post_meta( $post_id, '_unit_measurement', stripslashes( $_POST['_unit_measurement'] ) );
}
// only copy the opening php tag if needed
// Change the shop / product prices if a _unit_price is set
add_filter( 'woocommerce_get_price_html', 'sv_change_product_html', 10, 2 );
function sv_change_product_html( $price_html, $product ) {
$_unit_price = get_post_meta( $product->id, '_unit_price', true );
if ( ! empty( $_unit_price ) ) {
$_unit_measurement = get_post_meta( $product->id, '_unit_measurement', true );
// Here you just concatenate the $_unit_measurement variable (in for example another span tag) after the price
$price_html = '<span class="amount">' . wc_price( $_unit_price ). ' </span>';
$price_html .= '<span class="mesurement">' . $_unit_measurement . ' </span><br />';
}
// return the formated price with the formated unit mesurement
return $price_html;
}
代码位于活动子主题的 function.php 文件中(活动主题或任何插件文件)。