目前使用WordPress 5。1.1和WooCommerce 3。5.7.我的WooCommerce商店有大约500种产品,由简单和可变的产品组成。
每个产品自然都有一个SKU,但每个产品也有一个唯一的ID代码,称为“商品代码”。我向特定行业销售特定产品。
我在函数中添加了简单和变量产品的自定义字段的代码。php文件,这在目前工作得很好。
我的问题是,我试图让‘商品代码‘出现在购物车,结帐,发票和电子邮件中的产品标题下。
我在网上读过各种教程来帮助我,但我没有更明智的,因为每个教程都以不同的方式做类似的事情。大多数教程都假设用户已经通过前端输入了数据,但我的数据是预设的。
我曾经使用过的帮助我的教程是:
- https://businessbloomer.com/woocommerce-add-custom-field-product-variation/
- https://www.liquidweb.com/blog/custom-fields-woocommerce-products/
- https://www.tychesoftwares.com/how-to-add-custom-fields-to-woocommerce-products-subsequently-through-the-order-cycle/
<?php
// Add WooCommerce Custom Field for Commodity Code
function vp_add_commodity_code() {
$args = array(
'id' => 'vp_commodity_code',
'label' => __( 'Commodity Code', 'woocommerce' ),
'placeholder' => __( 'Enter Commodity Code here', 'woocommerce' ),
'desc_tip' => true,
'description' => __( 'This field is for the Commodity Code of the product.', 'woocommerce' ),
);
woocommerce_wp_text_input( $args );
}
add_action( 'woocommerce_product_options_sku', 'vp_add_commodity_code' );
// Save Commodity Code into WooCommerce Database
function vp_save_commodity_code( $post_id ) {
// grab the Commodity Code
$sku = isset( $_POST[ 'vp_commodity_code' ] ) ? sanitize_text_field( $_POST[ 'vp_commodity_code' ] ) : '';
// grab the product
$product = wc_get_product( $post_id );
// save the Commodity Code custom field
$product->update_meta_data( 'vp_commodity_code', $sku );
$product->save();
}
add_action( 'woocommerce_process_product_meta', 'vp_save_commodity_code' );
// Display Commodity Code on the Frontend
function vp_display_commodity_code() {
global $post;
// Check for the Commodity Code value
$product = wc_get_product( $post->ID );
$title = $product->get_meta( 'vp_commodity_code' );
if( $title ) {
// Only display the field if we've got a value for the field title
printf(
'<div class="vpcommoditycode-wrapper"><strong>Commodity Code: </strong>%s</div>',
esc_html( $title )
);
}
}
add_action( 'woocommerce_before_add_to_cart_button', 'vp_display_commodity_code' );
// Add custom field input @ Product Data > Variations > Single Variation
add_action( 'woocommerce_variation_options_pricing', 'comcode_add_custom_field_to_variations', 10, 3 );
function comcode_add_custom_field_to_variations( $loop, $variation_data, $variation ) {
woocommerce_wp_text_input( array(
'id' => 'custom_field[' . $loop . ']',
'class' => 'short',
'label' => __( 'Community Code', 'woocommerce' ),
'value' => get_post_meta( $variation->ID, 'custom_field', true ),
'placeholder' => __( 'Enter Commodity Code here', 'woocommerce' ),
'desc_tip' => true,
'description' => __( 'This field is for the Commodity Code of the product.', 'woocommerce' ),
)
);
}
// Save custom field on product variation
add_action( 'woocommerce_save_product_variation', 'comcode_save_custom_field_variations', 10, 2 );
function comcode_save_custom_field_variations( $variation_id, $i ) {
$custom_field = $_POST['custom_field'][$i];
if ( isset( $custom_field ) ) update_post_meta( $variation_id, 'custom_field', esc_attr( $custom_field ) );
}
// Store custom field value into variation data
add_filter( 'woocommerce_available_variation', 'comcode_add_custom_field_variation_data' );
function comcode_add_custom_field_variation_data( $variations ) {
$variations['custom_field'] = '<div class="woocommerce_custom_field"><strong>Commodity Code: </strong><span>' . get_post_meta( $variations[ 'variation_id' ], 'custom_field', true ) . '</span></div>';
return $variations;
}
?>
可以某种PHP/WooCommerce天才帮助我在这里请要么提供代码或指向我一个教程,将帮助我或名称的第三方WordPress插件,将做到这一点。
2条答案
按热度按时间weylhg0b1#
我已经重新访问并完成了您现有的代码,例如它不适用于产品变体。这将:
代码:
代码进入函数。php文件您的活动子主题(或活动主题)。测试和作品。
l7wslrjt2#
我用了上面的代码给你,但我发现商品代码显示,但产品的价格不显示,我试图改变挂钩,但然后也不显示
我觉得我需要改变正确的挂钩在下面的代码显示商品代码和产品价格