WooCommerce自定义条形码元数据前端显示问题求助
WooCommerce自定义元字段barcode无法显示的解决方法
你在functions.php中创建的_barcode是自定义产品元字段,但你用get_attribute()调用是错误的——这个方法是用来读取WooCommerce的产品属性(比如颜色、尺寸这类全局属性)的,和自定义元字段不是同一个概念,所以会显示空白。
你的创建字段代码(供参考)
function add_barcode(){ woocommerce_wp_text_input( array( 'id' => '_barcode', 'label' => __( 'Barcode', 'your-plugin' ), 'placeholder' => 'Scan Barcode', 'desc_tip' => 'true', 'description' => __( "Scan the product's barcode.", "your-plugin" ) ) ); } add_action('woocommerce_product_options_inventory_product_data','add_barcode'); function add_barcode_save( $product ){ if( isset( $_POST['_barcode'] ) ) { $product->update_meta_data( '_barcode', sanitize_text_field( $_POST['_barcode'] ) ); } else { $product->delete_meta_data( '_barcode' ); } } add_action( 'woocommerce_admin_process_product_object', 'add_barcode_save' );
正确的显示代码
直接使用WooCommerce产品对象的get_meta()方法读取自定义元字段,同时增加安全判断和转义:
$product = wc_get_product(); // 先判断产品对象是否存在,且元字段有值 if ( $product && $barcode = $product->get_meta( '_barcode' ) ) { echo '<strong>Barcode: </strong>' . esc_html( $barcode ); }
补充说明
get_meta()是WooCommerce专门用来读取产品自定义元数据的方法,对应你保存时用的update_meta_data();- 加入
esc_html()是为了防止XSS攻击,确保输出内容的安全性; - 增加产品对象和元字段值的判断,避免在产品不存在或无条码时输出多余的标签内容。
内容的提问来源于stack exchange,提问作者Adam Bell
相关产品推荐
相关产品推荐

