Автоматически добавлять таксономию в CPT - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь добавить новую категорию в CPTA каждый раз, когда добавляю категорию в CPTB (автоматически).

Я обнаружил, что этот код добавляет новую категорию каждый раз, когда я добавляю новую страницу. Категория имеет то же название, что и титульный пост.

Моя цель. У меня должны быть одинаковые категории в CPT-A и CPT-B, каждый раз, когда я добавляю новую категорию в дубликат CPTA в CPTB. Я знаю, что могу присвоить одну таксономию обоим CPT, но тогда, если я выберу категорию «автомобили», у меня будут результаты из CPTA и CPTB. Это основная причина создания двух разных таксономий.

function update_custom_terms($post_id) {

    // only update terms if it's a post-type-B post
    if ( 'page' != get_post_type($post_id)) {
        return;
    }

    // don't create or update terms for system generated posts
    if (get_post_status($post_id) == 'auto-draft') {
        return;
    }

    /*
    * Grab the post title and slug to use as the new 
    * or updated term name and slug
    */
    $term_title = get_the_title($post_id);
    $term_slug = get_post( $post_id )->post_name;

    /*
    * Check if a corresponding term already exists by comparing 
    * the post ID to all existing term descriptions. 
    */
    $existing_terms = get_terms('category', array(
        'hide_empty' => false
        )
    );

    foreach($existing_terms as $term) {
        if ($term->description == $post_id) {
            //term already exists, so update it and we're done
            wp_update_term($term->term_id, 'category', array(
                'name' => $term_title,
                'slug' => $term_slug
                )
            );
            return;
        }
    }

    /* 
    * If we didn't find a match above, this is a new post, 
    * so create a new term.
    */
    wp_insert_term($term_title, 'category', array(
        'slug' => $term_slug,
        'description' => $post_id
        )
    );
}

//run the update function whenever a post is created or edited
add_action('save_post', 'update_custom_terms');

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Вы можете использовать хук create_term , подробнее на https://developer.wordpress.org/reference/hooks/create_term/

0 голосов
/ 28 мая 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...