Wordpress: автоматически вставлять категории и теги, если они не существуют? - PullRequest
8 голосов
/ 10 июня 2010

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

Вот беспорядок, который я сделал, пытаясь заставить это случиться:

<?php 
    if (is_term('football', 'category')) {
    } 
    else (
        $new_cat = array('cat_name' => 'Football', 'category_description' => 'Football Blogs', 'category_nicename' => 'category-slug', 'category_parent' => 'sports');
        $my_cat_id = wp_insert_category($new_cat);
    ) 

Я планирую добавить это как плагин. Любые мысли или помощь будут великолепны!

Ответы [ 2 ]

10 голосов
/ 10 июня 2010

Вы можете просто запустить;

wp_insert_term('football', 'category', array(
    'description' => 'Football Blogs',
    'slug' => 'category-slug',
    'parent' => 4 // must be the ID, not name
));

Функция не добавит термин, если он уже существует для этой таксономии!

Из интереса, когда вы будете вызывать этот видкода в вашем плагине?Убедитесь, что вы зарегистрировали его в функции ловушки активации, иначе он будет работать при каждой загрузке!

ОБНОВЛЕНИЕ

Чтобы получить идентификатор термина по слагу, используйте;

$term_ID = 0;
if ($term = get_term_by('slug', 'term_slug_name', 'taxonomy'))
    $term_ID = $term->term_id;

Замените «таксономия» на таксономию термина - в вашем случае «категория».

0 голосов
/ 17 сентября 2014

Вот как можно назначить и создать категорию, если она не существует

$pid = 168; // post we will set it's categories
$cat_name = 'lova'; // category name we want to assign the post to 
$taxonomy = 'category'; // category by default for posts for other custom post types like woo-commerce it is product_cat
$append = true ;// true means it will add the cateogry beside already set categories. false will overwrite

//get the category to check if exists
$cat  = get_term_by('name', $cat_name , $taxonomy);

//check existence
if($cat == false){

    //cateogry not exist create it 
    $cat = wp_insert_term($cat_name, $taxonomy);

    //category id of inserted cat
    $cat_id = $cat['term_id'] ;

}else{

    //category already exists let's get it's id
    $cat_id = $cat->term_id ;
}

//setting post category 
$res=wp_set_post_terms($pid,array($cat_id),$taxonomy ,$append);

var_dump( $res );
...