web-dev-qa-db-ja.com

投稿をまとめて追加するためのベストプラクティス

カスタム投稿タイプUI プラグインを使用して追加したカスタム投稿タイプと分類法のセットがあり、数百エントリ(> 500)を入力する必要があります。

このデータをまとめてインポートする方法例えば。 CSVとして?

2
ServAce85

多くの選択肢がありますが、これらの機能はあなたの友達です:

  • wp_insert_post - いくつかの引数を渡すと投稿が作成され、成功した場合は投稿IDが返されます
  • wp_set_object_terms - 投稿ID、カスタム分類法、および設定したい用語を渡します。
  • fopen - csvファイルを開くためのもの
  • fgetcsv - csvから単一行を読み込み、処理のためにそれを返す

オプション1 - CSVのロード

以前の関数を使用してcsvファイルをロードしてから、各行について値を取り出し、それらの値を使用してwp_insert_postおよびwp_set_object_termsを呼び出します。

例えばcsv:

oranges,juicy and zesty,fruit
apples,juicy but not so zesty,fruit
cucumber,sandwiches go well with it,vegetable

PHP:

if (($handle = fopen("food.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $title = $data[0];
        $content = $data[1];
        $food_type = $data[2];
        $post_id = wp_insert_post( array(
            'post_title' => $title,
            'post_content' => $content,
            'post_type' => 'toms_food_post_type',
        ));
        wp_set_object_terms( $post_id, $food_type, 'toms_food_taxonomy' );
    }
    fclose($handle);
}

私はphp.netからの例から上記を基にしました

見出しがある場合は、最初の行をスキップするロジックと、エラーチェックを行うロジックが必要になる場合があります。あなたの投稿が作成されなかった場合、または用語の設定に失敗した場合など

オプション2 - WXR

インポートファイルの形式はRSSに基づいています。そのため、すべてのコンテンツを含むRSSドキュメントを出力し、投稿タイプとカスタム分類法を表すためにWordPressが使用する追加のフィールドを追加できる場合は、デフォルトのWordPressインポーターを使用できます

ちなみに、WordPressに入った投稿を管理すること、および投稿の種類を登録する最善の方法はまったく異なる質問です。 3つの質問がある場合は、それらをすべてまとめるのではなく3つの質問を作成します。そうすればあなたは何かを得るために3つの答えすべてを持っている誰かを必要としません。

参考文献

2
Tom J Nowell