[英]Wordpress esc_textarea() deletes line breaks, how to keep them?
[英]How to prevent the removal of line breaks in a textarea in Wordpress?
我拥有一家在Wordpress + Woocommerce上运行的电子商务商店。 客户可以通过在文本字段中提供文本来定制其产品。 但是,当他们按下购买按钮时,文本字段内的所有换行符都会被删除。
因此,如果我输入以下内容:
1号线
2号线
3号线
结果将是: Line 1 Line 2 Line 3 。
这是一个主要问题,我一直在尝试解决该问题,但没有成功。 我找到了一些解决方案,但是我对PHP几乎一无所知,因此无法像nl2br()方法那样使用任何PHP解决方案。 我也尝试过CSS和jQuery,但这也不起作用。
我知道创建这些文本字段的PHP文件位于何处。 请在下面查看其内容。 是否可以在其中放置一些东西以防止发生换行符?
<?php foreach ( $addon['options'] as $key => $option ) :
$addon_key = 'addon-' . sanitize_title( $addon['field-name'] );
$option_key = empty( $option['label'] ) ? $key : sanitize_title( $option['label'] );
$current_value = isset( $_POST[ $addon_key ] ) && isset( $_POST[ $addon_key ][ $option_key ] ) ? wc_clean( $_POST[ $addon_key ][ $option_key ] ) : '';
$price = apply_filters( 'woocommerce_product_addons_option_price',
$option['price'] > 0 ? '(' . wc_price( get_product_addon_price_for_display( $option['price'] ) ) . ')' : '',
$option,
$key,
'custom_textarea'
);
?>
<p class="form-row form-row-wide addon-wrap-<?php echo sanitize_title( $addon['field-name'] ); ?>">
<?php if ( ! empty( $option['label'] ) ) : ?>
<label><?php echo wptexturize( $option['label'] ) . ' ' . $price; ?></label>
<?php endif; ?>
<textarea type="text" class="input-text addon addon-custom-textarea" data-raw-price="<?php echo esc_attr( $option['price'] ); ?>" data-price="<?php echo get_product_addon_price_for_display( $option['price'] ); ?>" name="<?php echo $addon_key ?>[<?php echo $option_key; ?>]" rows="4" cols="20" <?php if ( ! empty( $option['max'] ) ) echo 'maxlength="' . $option['max'] .'"'; ?>><?php echo esc_textarea( $current_value ); ?></textarea>
</p>
代替使用wc_clean()
您应该使用wc_sanitize_textarea()
。 此方法可以使textarea输入保持卫生并保留换行符。
可以在WooCommerce wc_sanitize_textarea()
文档中找到更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.