web-dev-qa-db-fra.com

wp_insert_category () définir le 'cat_ID' ne donne pas d'erreur de tableau

J'écris un plugin qui crée automatiquement un tas de choses, à savoir des catégories et des catégories enfants. Mais quand j'utilise le code suivant pour créer les catégories: (de wp codex )

//Create Post Categories
$my_cat = array(
    'cat_ID' => 1146,
    'cat_name' => 'Newcastle Community News & Views', 
    'category_description' => '', 
    'category_nicename' => 'news', 
    'category_parent' => '',
    'taxonomy' => 'category'
);
$my_cat_id = wp_insert_category($my_cat);

Cela me donne l'erreur suivante.

Warning: array_merge() [function.array-merge]: Argument #1 is not an array in /home/newcastl/public_html/wp-includes/taxonomy.php on line 2535

Avec l'ID dans '' ne fonctionne pas non plus. Je dois définir l'ID pour pouvoir y faire référence lors de l'utilisation de sous-chats. Merci!

1
Philip

Ok, voici la solution que j'ai trouvée: vous n'êtes pas censé définir d'ID lorsque vous créez de nouveaux objets, tels que des catégories. Au lieu de cela, j'ai d'abord créé les catégories de parents en utilisant quelque chose comme:

$my_cat = array(
    'cat_name' => 'Community News & Views', 
    'category_nicename' => 'news', 
    'taxonomy' => 'category'
);
$my_cat_id = wp_insert_category($my_cat);

Dans un deuxième temps, je crée les catégories enfants en utilisant

    $parent_term = term_exists( 'news', 'category' );
$parent_term_id = $parent_term['term_id'];
$my_cat = array(
    'cat_name' => 'Business Articles', 
    'category_nicename' => 'business-articles', 
    'category_parent' => $parent_term_id,
    'taxonomy' => 'category'
);
$my_cat_id = wp_insert_category($my_cat);

Remarque: vous ne pouvez pas créer des catégories parent et enfant en même temps car la catégorie parent doit exister. Lorsque vous créez la catégorie enfant, notez également que: term_exists( 'news', 'category' ); utilise le slug $ comme premier argument. Le codex n'est pas si clair sur celui-là.

1
Philip

Essayez d’utiliser wp_insert_term () à la place de wp_insert_category (). Vous pouvez utiliser le code suivant:

wp_insert_term(
 'Newcastle Community News & Views', 
 'category', 
  array(
     'description'=>'',
     'slug'=>'',
     'parent'=>''
  )
);
0
Sabita Sahoo