web-dev-qa-db-ja.com

Wp_insert_post()でプラグイン固有のフィールドを追加する

モデレータのメモ:元のタイトルは "wp_insert_post()とプラグイン"でした)

私はwp_insert_post()を次のように使います。

 $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 );

すべてうまくいきますが、 "All in One SEO Pack"のようなプラグインを使いたいのですが、カスタムフィールドを保存する方法がわかりません。私はこれを試しましたが、うまくいきませんでした。

 $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 );

これらのフィールドを保存する方法助けてくれてありがとう!

1
word

@ sorich87の回答は99%です。違いは、 オールインワンSEO Pack は特定のベストプラクティスに従い、次の接頭辞を使用することです。そのメタキーの'_aioseop_'。これにより実際の作業コードは次のようになります。

$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);
}

これは私のテストシステムのwp_postmetaテーブルにあるAll-in-One SEO Pack固有のレコードのスクリーンショットです。それらを表示するためにNavicat for MySQLを使用します。

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

3
MikeSchinkel

オールインワンSEOデータはポストメタとして保存されます。 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