【问题标题】:post_status in Woocommerce default CSV exporter/importerWoocommerce 默认 CSV 导出器/导入器中的 post_status
【发布时间】:2021-08-26 10:15:48
【问题描述】:

这是我尝试使用默认 Woocommerce CSV 导入器/导出器导出/导入 post_status 的内容。

我已经设法让 post_status 字段显示在导入器/导出器中映射。 它还将列导出到 csv。但是没有数据。

如何让 post_status 正确导出和导入?

// ADD CUSTOM IMPORT COLUMN TO CSV IMPORTER
add_filter( 'woocommerce_csv_product_import_mapping_options', 'add_column_to_importer' );

function add_column_to_importer ( $options ) {
    $options['post_status'] = 'post_status';
    return $options;
}

add_filter( 'woocommerce_csv_product_import_mapping_default_columns', 'add_column_to_mapping_screen' );

function add_column_to_mapping_screen ( $columns ) {
    $columns['post_status'] = 'post_status';
    return $columns;
}

add_filter( 'woocommerce_product_import_pre_insert_product_object', 'process_import', 10, 2 );

function process_import( $object, $data ) {    
    if (!empty($data['post_status'])) {
    $object->post_status($data['post_status']);
  }
    return $object;
}

// ADD CUSTOM EXPORT COLUMN TO CSV EXPORTER
add_filter( 'woocommerce_product_export_column_names', 'add_export_column' );
add_filter( 'woocommerce_product_export_product_default_columns', 'add_export_column' );

function add_export_column( $columns ) {    
    $columns['post_status'] = 'post_status';
    return $columns;
}

add_filter( 'woocommerce_product_export_product_column_custom_column', 'add_export_data', 10, 2 );

function add_export_data( $value, $product ) {
    $post_status = get_post_status();
    return $post_status;
}

【问题讨论】:

    标签: wordpress woocommerce


    【解决方案1】:

    你的钩子里面有问题。例如,检查最后一个钩子。您需要将...._custom_column 替换为您的实际列,在您的情况下为post_status

    add_filter( 'woocommerce_product_export_product_column_post_status', 'add_export_data', 10, 2 );
    
    function add_export_data( $value, $product ) {
        return $product->get_status();
    }
    
    add_filter( 'woocommerce_product_import_pre_insert_product_object', 'process_import', 10, 2 );
    function process_import( $product, $data ) {
        if ( ! empty( $data['post_status'] ) ) {
            $product->set_status( $data['post_status'] );
        }
    
        return $product;
    }
    

    这个钩子用来给你的列添加一些数据,因为钩子不正确,所以没有数据可见。

    【讨论】:

    • 感谢您为已发布的产品返回零。我期待一个诸如“发布”之类的值,并希望导入一些 post_status 值为“垃圾”的产品。零是预期的结果吗?
    • 您需要使用开关来映射这些值!我的代码只是向您展示了为什么您看不到任何值 - 现在您可以看到一个值。
    • 进行了快速搜索,结果为空。您介意将我链接到一些可能对我使用开关有帮助的文档吗?我真是瞎了眼。我刚刚修改了我以前用来导出/导入 slug 列的代码。
    • 刚刚看到您没有将任何对象传递给get_post_status 函数。再试一次。编辑:我也为你简化了一点。
    • 这现在给出了预期的导出结果,仍在测试导入。
    猜你喜欢
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 2019-05-09
    • 2017-02-06
    • 2018-10-19
    • 2019-11-16
    相关资源
    最近更新 更多