Автоматически добавляйте категорию в пользовательский тип записи, используя category slug


Я использую эту отличную функцию для автоматического добавления категории в мой пользовательский тип публикации "Видео" при публикации, если категория еще не выбрана. Это отлично работает:

function add_video_category_automatically($post_ID) {
    global $wpdb;
    if(!has_term('','category',$post_ID)){
        $cat = array(394);
        wp_set_object_terms($post_ID, $cat, 'category');
    }
}
add_action('publish_videos', 'add_video_category_automatically');

Но мне бы очень хотелось получить идентификатор категории через slug, чтобы мне не приходилось менять его вручную, когда я тестирую на локальном хосте по сравнению с живым сайтом (у которого может быть другой идентификатор для этой категории, поскольку локальный хост и живой сайт не синхронизированы).

Я пробовал количество вариантов, но все они приводят к тому, что новым публикациям присваивается категория "394", а не "Видео". Вот моя последняя попытка. Можете ли вы сказать мне, где я ошибаюсь?

function add_video_category_automatically($post_ID) {
    global $wpdb;
    if(!has_term('','category',$post_ID)){
        $category = get_term_by( 'slug', 'videos', 'category' );
        $cat = array($category->term_id);
        wp_set_object_terms($post_ID, $cat, 'category');
    }
}
add_action('publish_videos', 'add_video_category_automatically');

Спасибо вам!

Author: Michelle, 2011-08-20

1 answers

wp_set_object_terms Лучше работает с термином slug вместо идентификатора термина, поэтому измените эту строку:

$cat = array($category->term_id);

Кому:

 $cat = array($category->slug);
 2
Author: Bainternet, 2011-08-20 19:38:03