إعادة ربط الفئات الفرعية إلى فئات الوالدين على Woocommerce

1

لقد استوردنا مؤخرًا متجر منتجات كبيرًا من Big commerce إلى woocommerce ولكننا واجهنا مشكلة تتعلق بالفئات.

المنتجات هي روابط للفئة الفرعية فقط ، مما يعني أنه إذا قمت بزيارة الفئة الرئيسية ، فلن يتم عرض أي منتجات.

المنتج مرتبط بفئة فرعية وليس ولي الأمر

هل هناك طريقة لإعادة ربط جميع الفئات الفرعية بالفئة الرئيسية على نطاق واسع؟ يحتوي المتجر على أكثر من 6000 منتج ومئات الفئات ، لذلك حتى مع أدوات التعديل المجمعة ، سيستغرق الأمر وقتًا طويلاً لإنجاز هذه المهمة.

نشكرك مقدمًا ونعتذر إذا تم طرح ذلك بالفعل ، فمن الصعب العثور على الصياغة الصحيحة لهذا الموقف.

** جئت عبر هذا الرمز **

add_action('save_post', 'assign_parent_terms', 10, 2);

function assign_parent_terms($post_id, $post){

    if($post->post_type != 'product')
        return $post_id;

    // get all assigned terms   
    $terms = wp_get_post_terms($post_id, 'product_cat' );
    foreach($terms as $term){
        while($term->parent != 0 && !has_term( $term->parent, 'product_cat', $post )){
            // move upward until we get to 0 level terms
            wp_set_post_terms($post_id, array($term->parent), 'product_cat', true);
            $term = get_term($term->parent, 'product_cat');
        }
    }

}

هل يمكن لشخص ما أن يشير في الاتجاه الصحيح لتعديل القرص بحيث لا أضطر إلى حفظ كل منتج على حدة ولكن بدلاً من تشغيله مرة واحدة لتحديثهم جميعًا؟

مرة أخرى، شكرا لكم على مساعدتكم.

1 إجابة

0

لا تفعل add_action() جزء. استعمال

$products = get_posts(['post_type' => 'product', 'posts_per_page' => 100, 'offset' => 0]);
var_dump(count($products));
foreach ($products as $product) {
    assign_parent_terms($oroduct->ID, $product);
}

إعادة تحميل الصفحة. قم بزيادة الإزاحة يدويًا باستخدام 100 بعد كل تحديث حتى يظهر التفريغ 0.

:مؤلف
فوق
قائمة طعام