• 以前、「Taxonomy Importで重複するラベル名が登録されないのを回避したい」という質問をさせて頂き、この件に関しては解決しました。

    しかし、同様の理由で重複するラベル名があると「親ターム」と紐づけされないので回避したいです。
    以前教わったようにwp-taxonomy-import.phpに記述があると思いますので確認すると、$parent_idという変数を見つけましたのでこれが関係しているのかと思います。

    explode( ‘->’, $line )で$category_treeに配列として親子を入れて、
    explode( $delimiter, $category );ラベル名とスラッグ名を配列にしているのはわかりますが、
    親子関係を紐付けしている部分が分かりませんでした。。。
    アドバイス頂ければ幸いです。

    よろしくお願いいたします。

    private function create_taxonomy( $line, $delimiter, $target_taxonomy = ‘category’ ) {

    $created_categories = array();
    $parent_id = 0;
    $category_tree = explode( ‘->’, $line );

    foreach ( $category_tree as $category ) {
    if ( strlen( trim( $category ) ) == 0 )
    break;

    if ( strpos( $category, $delimiter ) !== false ) {
    $category = explode( $delimiter, $category );
    $category_name = $category[0];
    $category_slug = $category[1];
    $category_description = ( isset( $category[2] ) ? substr( $category[2], 1, -1 ) : ” );
    }
    else {
    $category_name = $category;
    $category_slug = $category;
    $category_description = ”;
    }

    if ( $category_slug !== $category_name ) {
    $existing_category = term_exists( $category_slug, $target_taxonomy );
    } else {
    $existing_category = term_exists( $category_name, $target_taxonomy );
    }

    if ( is_array( $existing_category ) ) {
    $parent_id = ( (int) $existing_category[‘term_id’] );
    }
    else if ( $existing_category ) {
    $parent_id = $existing_category;
    }
    else if ( $existing_category == false ) {
    $category_params = array(
    ‘description’ => $category_description,
    ‘slug’ => $category_slug,
    ‘parent’ => ( isset( $parent_id ) ? $parent_id : 0 )
    );

    $result = wp_insert_term( $category_name, $target_taxonomy, $category_params );

    if ( is_wp_error( $result ) ) {
    return die( “$catname produced this -> “.$result->get_error_message() );
    }
    $created_categories[] = $category_name;
    }

    }

    return $created_categories;
    }

  • トピック「WP Taxonomy Importで重複するラベル名があると「親ターム」が登録されないのを回避したい」には新たに返信することはできません。