0

私が使用Wordpress 3.5していて、もうカテゴリを設定できないようですwp_insert_post()。ドキュメント syas :

post_category はもう存在しません。投稿のカテゴリを設定するには wp_set_post_terms() を試してください

問題は、wp_set_post_terms()またはによって返される がwp_set_object_terms()必要なことです。によって挿入された投稿にカテゴリ タームを設定することはこれで問題ありませんが、問題は、 を呼び出すたびに、 を呼び出した後に設定したカテゴリ タームに加えて、投稿内のカテゴリを取得することです。が常に存在しないようにするにはどうすればよいですか?postIDwp_insert_post()wp_insert_post()wp_insert_post()Uncategorizedwp_insert_post()Uncategorized

4

1 に答える 1

5

どこで見つけたのかわかりませんがwp_insert_post() can't set categories anymoreWordPress Docから次のように実行できます

// Create post object
$my_post = array(
    'post_title'    => 'My post',
    'post_content'  => 'This is my post.',
    'post_status'   => 'publish',
    'post_author'   => 1,
    'post_category' => array(8,39) // id's of categories
);

// Insert the post into the database
wp_insert_post( $my_post );

ベローは、私のサイトの 1 つで、管理者が新しい投稿を動的に追加するために使用している私の実例です。カテゴリ名はlocation2 つのメタ フィールドで、ユーザーから入力されます (ユーザー入力をフィルター処理しましたが、ここでは省略しました)。

$category='location'; // category name for the post
$cat_ID = get_cat_ID( $category ); // need the id of 'location' category
//If it doesn't exist create new 'location' category
if($cat_ID == 0) {
    $cat_name = array('cat_name' => $category);
    wp_insert_category($cat_name); // add new category
}
//Get ID of category again incase a new one has been created
$new_cat_ID = get_cat_ID($category);
$my_post = array(
    'post_title' => $_POST['location_name'],
    'post_content' => $_POST['location_content'],
    'post_status' => 'publish',
    'post_author' => 1,
    'post_category' => array($new_cat_ID)
);
// Insert a new post
$newpost_id=wp_insert_post($my_post);
// if post has been inserted then add post meta 
if($newpost_id!=0)
{
    // I've checked whether the email and phone fields are empty or not
    // add  both meta
    add_post_meta($newpost_id, 'email', $_POST['email']);
    add_post_meta($newpost_id, 'phone', $_POST['phone']);
}

また、カテゴリなしで新しい投稿を追加するたびに、WordPressその投稿のデフォルト カテゴリが設定されますuncategorized。管理パネルから変更していない場合は、デフォルト カテゴリを任意のカテゴリに変更できますuncategorized

アップデート:

post_categoryはもう存在しないので、置き換えることができます

'post_category' => array($new_cat_ID)

以下で

'tax_input' => array( 'category' => $new_cat_ID )

上記の例では。使用することもできます

$newpost_id=wp_insert_post($my_post);
wp_set_post_terms( $newpost_id, array($new_cat_ID), 'category' );

$new_cat_IDこの例では、次のコード行を使用して が見つかったことを思い出してください。

$new_cat_ID = get_cat_ID($category);

ただし、次のコードを使用してカテゴリ ID を取得することもできます

$category_name='location';
$term=get_term_by('name', $category_name, 'category');
$cat_ID = $term->term_id;

get_term_by関数の詳細を参照してください。

于 2012-12-25T21:36:32.237 に答える