web-dev-qa-db-fra.com

Ajout de champs spécifiques au plugin avec wp_insert_post ()?

( Note du modérateur: Le titre d'origine était "wp_insert_post () and plugins")

J'utilise wp_insert_post() comme ceci:

 $my_post = array(
 'post_title' => 'title',
 'post_content' => $post,
 'post_status' => 'publish',
 'post_author' => 1,
 'post_date' => date('Y-m-d H:i:s', $oldtime),
 'post_category' => array(3,4)

 );

 wp_insert_post( $my_post );

Tout fonctionne bien, mais je souhaite utiliser des plugins tels que "Pack SEO" ). Je ne vois pas comment enregistrer leurs champs personnalisés. J'ai essayé ça mais ça n'a pas marché:

 $my_post = array(
 'post_title' => 'title',
 'post_content' => $post,
 'post_status' => 'publish',
 'post_author' => 1,
 'post_date' => date('Y-m-d H:i:s', $oldtime),
 'post_category' => array(3,4)
 'aiosp_description' => 'description',
 'aiosp_keywords' => 'keywords' // these (aiosp_) is from post edit page in WP (<input type="text" size="62" name="aiosp_keywords" value="keywords">)

 );

 wp_insert_post( $my_post );

Comment puis-je sauvegarder ces champs? Merci pour toute aide!!!

1
word

La réponse de @ sorich87 est de 99%. La différence est que Le pack SEO Tout-en-un suit certaines bonnes pratiques et utilise un préfixe: '_aioseop_' sur ses clés méta. Cela rend le code de travail réel ressemblant plus à ceci:

$my_post = array(
  'post_title' => 'title',
  'post_content' => $post,
  'post_status' => 'publish',
  'post_author' => 1,
  'post_date' => date('Y-m-d H:i:s', $oldtime),
  'post_category' => array(3,4)
);

$post_id = wp_insert_post( $my_post );

if( !is_wp_error($post_id) && $post_id > 0 ) {
  add_post_meta($post_id, '_aioseop_keywords', $keywords);
  add_post_meta($post_id, '_aioseop_description', $description);
  add_post_meta($post_id, '_aioseop_title', $title);
}

Voici une capture d'écran des enregistrements spécifiques au Pack de référencement All-in-One dans la table wp_postmeta de mon système de test utilisant Navicat for MySQL pour les afficher:

Screenshot of Post Meta records used by All-in-One SEO Pack
(source: mikeschinkel.com )

3
MikeSchinkel

Les données de référencement tout-en-un sont enregistrées en tant que métas postérieurs. Vous devrez utiliser add_post_meta:

$my_post = array(
    'post_title' => 'title',
    'post_content' => $post,
    'post_status' => 'publish',
    'post_author' => 1,
    'post_date' => date('Y-m-d H:i:s', $oldtime),
    'post_category' => array(3,4)
);

$post_id = wp_insert_post( $my_post );

if( !is_wp_error($post_id) && $post_id > 0 ) {
    add_post_meta($post_id, 'keywords', $keywords);
    add_post_meta($post_id, 'description', $description);
    add_post_meta($post_id, 'title', $title);
}
1
sorich87