我得到此代码(见下文)来创建产品变体自定义字段。它工作得很好。现在我需要使用WP All Import Pro插件从csv文件导入产品。此插件允许通过将csv中的信息映射到Product and Product Variation字段来创建导入任务。
问题:事情是WP All Import插件无法看到新创建的产品变体自定义字段。我的意思是,当我导入数据的映射时,不会列出这个新字段。
我的假设是,此代码无法在数据库中创建一些数据,以使该字段可用于其他模块。
如何让它正常工作
我还附上了WP All Import页面的捕获,其中该字段应该可见。
/*******************************
add custom fields to product variations
*********************************/
// regular variable products
add_action( 'woocommerce_product_after_variable_attributes', 'add_to_variations_metabox', 10, 3 );
add_action( 'woocommerce_save_product_variation', 'save_product_variation', 20, 2 );
/*
* Add new inputs to each variation
*
* @param string $loop
* @param array $variation_data
* @return print HTML
*/
function add_to_variations_metabox( $loop, $variation_data, $variation ){
$custom = get_post_meta( $variation->ID, '_custom', true ); ?>
<div class="variable_custom_field">
<p class="form-row form-row-first">
<label><?php echo __( 'MY CUSTOM FIELD:', 'plugin_textdomain' ); ?></label>
<input type="text" size="5" name="variation_custom_data[<?php echo $loop; ?>]" value="<?php echo esc_attr( $custom ); ?>" />
</p>
</div>
<?php
}
/*
* Save extra meta info for variable products
*
* @param int $variation_id
* @param int $i
* return void
*/
function save_product_variation( $variation_id, $i ){
// save custom data
if ( isset( $_POST['variation_custom_data'][$i] ) ) {
// sanitize data in way that makes sense for your data type
$custom_data = ( trim( $_POST['variation_custom_data'][$i] ) === '' ) ? '' : sanitize_title( $_POST['variation_custom_data'][$i] );
update_post_meta( $variation_id, '_custom', $custom_data );
}
}
答案 0 :(得分:0)
WP ALL IMPORT将此部分编码到其文件中。他们没有提供任何钩子或过滤器来为此部分添加字段。
这里最重要的是WP ALL IMPORT的想法是这样的:
因为特定变体的所有Meta最终都添加到post meta表中。这将由get_post_meta检索。就像自定义字段一样。因此,为了将meta附加到变体,您可以只使用名称作为存储实际元的名称的另一个自定义字段以及您希望变体的值。只需检查附加的图像。请参阅 - http://www.wpallimport.com/documentation/custom-fields/theme-plugin-fields/
答案 1 :(得分:0)
我知道这个问题差不多一年前被问过,但我一直试图找出这个确切的问题已经有一段时间了。但最终我设法找到一种解决方法,至少可以让您将数据转换为变体而不是主要的母产品:
1)在WpAllImport Wordpress插件中,您将能够看到&#34;变体&#34;选项卡如屏幕截图所示。点击这个。
2)在此页面上,您将再次看不到您为变体做出的任何自定义字段,但有产品属性部分。
3)如果您将变体添加为属性并取消选中&#34;在变体中显示&#34;和#34;分类法&#34;和&#34;可见&#34;然后,您可以将数据存储在属性中。
4)导入后,您应该能够在属性中看到数据,如果您知道某些编程,您甚至可以编写脚本然后遍历所有变体并将此数据复制到自定义字段。
我知道它并不多,但出于我的目的,我至少能够将数据保存在我在产品导出插件中后期使用的变体中。
希望有所帮助!
答案 2 :(得分:0)
这个问题最初是2年前提出的。我在2020年找到了解决方案。希望这对仍在寻找解决方案的人有所帮助。
请转到“所有产品”,然后在顶部显示“添加新产品”,您应该再看到两个按钮“导入”和“导出”。单击“导出”,您将看到复选框“是,导出所有自定义元”的选项。请选中此部分,您的所有自定义字段(即使是变体形式)也将被导出。
谢谢