Автоматическое назначение категорий продуктов Woocommerce из тегов продуктов при импорте

Я пытаюсь автоматически установить категории продуктов Woocommerce из тегов продуктов при импорте продуктов с использованием плагина WP All Imports.

Например: я импортирую определенные заголовки хлебных крошек как теги продуктов: Спорт / Обувь / Беговые кроссовки> Теперь я хочу подключить этот заголовок к заранее определенной иерархии категорий:

Тег: Спорт / Обувь / Кроссовки => Каталог товаров: Обувь / Бег

Может быть, есть плагин, где можно поставить теги в заранее определенных категориях продуктов, чтобы отображать выбранные продукты в категории?

Я нашел следующий код, близкий к тому, что мне нужно для достижения моей цели:

function auto_add_category ($product_id = 0) {

    if (!$product_id) return;

    // because we use save_post action, let's check post type here
    $post_type = get_post_type($post_id);
    if ( "product" != $post_type ) return;

    $tag_categories = array (
        'ring' => 'Jewellery'
        'necklace' => 'Jewellery',
        'dress' => 'Clothing',
    );

    // get_terms returns ALL terms, so we have to add object_ids param to get terms to a specific product
    $product_tags = get_terms( array( 'taxonomy' => 'product_tag', 'object_ids' => $product_id ) );
    foreach ($product_tags as $term) {
        if ($tag_categories[$term->slug] ) {
            $cat = get_term_by( 'name', $tag_categories[$term->slug], 'product_cat' );
            $cat_id = $cat->term_id;
            if ($cat_id) {
                $result =  wp_set_post_terms( $product_id, $cat_id, 'product_cat', true );
            }
        }
    }
}
add_action('save_post','auto_add_category');

person Gert Snijder    schedule 10.03.2019    source источник


Ответы (1)


Прежде всего, вам нужно самому разобраться в логике. Для меня неясно, как вы можете отфильтровать, какой из наборов тегов должен быть организован, как описано.

Узнав логику, вы можете использовать поле «Редактор функций» в настройках импорта. Внизу экрана, где у вас есть отображение всего импорта.

Вы можете поместить туда свою функцию и использовать ее в поле тега. Например:

у вас есть функция:

<?php
function import_rearrange_tags( $tag, $count = 1 ) {
  // Some code here
  return $tag;
}
?>

Таким образом, вы можете использовать его в своем сопоставлении как фильтр:

[import_rearrange_tags({tags[1]}, 3)]

Я использую второй параметр, чтобы показать всю идею.

person Artemiy Egorov    schedule 10.03.2019
comment
Например: Я импортирую определенные ярлыки хлебных крошек как теги продуктов: Sports / Shoes / Running Shoes ›Теперь я хочу подключить этот ярлык к заранее определенной иерархии категорий: Tag: Sports / Shoes / Running Shoes =› Product cat: обувь / бег - person Gert Snijder; 11.03.2019
comment
Я не понимаю ваш вопрос. Обычно хлебные крошки означают именно это - они должны показывать текущее положение вашего иерарха. Так что вам просто нужно их правильно настроить, и они должны работать должным образом. Теги нужны для объединения продуктов в разных категориях, поэтому они не должны быть в панировочных сухарях, они имеют свои собственные страницы. - person Artemiy Egorov; 27.03.2019