AD5 WordPress Lab

投稿をCSVで独自にインポートする

投稿をCSVで独自にインポートする

商品や物件など、WordPressに大量の投稿を追加したい場合に、CSVデータから投稿を作成する方法をご紹介します。

wp_posts、wp_postmeta、wp_term_relationship などに直接データをインサートする方法もありますが、

各テーブルの詳細な仕様や、WordPressがデフォルトで作成する投稿のメタ情報などを熟知していないと、不完全なデータを作ってしまうため、非常に難易度が高いです。

おすすめは、wp_insert_post() 、update_post_meta()、wp_set_post_terms() など、管理画面からの投稿に使用されている関数をループで回して、データを作成する方法です。

定期的に使用するなら、csvをアップロードするUIをプラグインとして作ってしまった方が良いですが、

1回のみの使用であれば、CSVデータをそのまま、phpMyAdminから一時的に作成したテーブルに流し込み、それをSELECTして処理する方法がおすすめです。

※作業前に必ず、wp_posts、wp_postmeta、wp_terms、wp_term_taxonomy、wp_term_relationship などのテーブルはバックアップを取り、やり直せるようにしておきましょう。

まず、CSVから作成したテーブルtemp_products には、以下のような商品データが入っており、これを投稿タイプproductsで登録するとします。

product_name 商品名→投稿タイトルにする
product_code 商品コード→投稿のスラッグとする
brand ブランド名→タクソノミーbrandとする
price 価格→カスタムフィールドpriceとする

プログラムの設置・実行方法はいくつか考えられますが、

簡単な方法は、一時的に固定ページを作って、page-***.php にプログラムを記述することです(必ず非公開にして、作業後はプログラム自体コメントアウトしておいた方が安全です)。

code

まずはtemp_productsのデータを取得しましょう。

code

WordPressのDB接続オブジェクトである $wpdb を使用すると簡単です。

そして、取得したデータをループで回しながら、投稿を作成していきます。

code

wp_insert_post() の引数である $post には、以下のようなキーを指定できます。

code

基本的には wp_posts テーブルに挿入する情報のみで、カスタムフィールドやタームは別途追加する必要があります。

wp_insert_post() が成功した場合には、挿入された投稿IDが返ってくるので、それを利用します。

code

Plugin Outbound Posts – 記事リスト内に外部リンクを挿入

Outbound Posts – 記事リスト内に外部リンクを挿入

投稿のリストの中に、見た目は他の投稿のリンクと同じように、外部リンクを差し込みたい、なんてことはありませんか? こんな風に・・・ Outbound Posts は、このような記事風の外部リンクを簡単に投稿できるプラグインです。 このプラグインを有効化すると、各記事の投稿画面に、「外部リンク」という欄が現
Column WordPressが重い・遅いときは、まず「プラグインのスリム化」をしよう 〜調査篇〜

WordPressが重い・遅いときは、まず「プラグインのスリム化」をしよう 〜調査篇〜

WordPressが重い、遅い!? WordPressのサイトが重い、読み込みが遅いので高速化したい、という相談をよく受けます。 本シリーズでは、実際の高速化の実例を元に、事前調査から対応までの手順をご紹介します。 WordPressが遅い原因 経験上、WordPressが遅い原因の80%以上はプラグインの過剰使用です。 プラグイン
Column WordPressにXMLサイトマップを独自実装するカスタマイズ

WordPressにXMLサイトマップを独自実装するカスタマイズ

WordPressに限らず、SEO対策に不可欠なXMLサイトマップ。 カスタマイズせずとも「Google XML Sitemaps」などのプラグインで瞬殺なわけですが、 多くのXMLサイトマッププラグインは、柔軟に設定できるように作られている分、 「このサイトでは要らない機能」がたくさん含まれることになるので、多少なりともリソー
Plugin AD5 LOYALTY – WordPressで会員制サイト作成

AD5 LOYALTY – WordPressで会員制サイト作成

当サイトで使用しているプラグインです。 WordPressのサイトを簡単に会員制サイトにすることができます。 ショートコードで簡単に会員登録フォーム、ログインフォームが設置可能で、全ての投稿に対して、会員用コンテンツと非会員用コンテンツを設定することができます。 ショートコートで簡単に会員登録フォーム
Column WordPressテーマ・プラグイン開発時のセキュリティ対策

WordPressテーマ・プラグイン開発時のセキュリティ対策

WordPressのテーマやプラグインを開発、カスタマイズする際には、脆弱性を生まないよう、セキュリティ対策を十分に考慮する必要があります。 CSRF対策 管理画面内外を問わず、WordPressにリクエストを送信するフォームや、データを更新するAJAXを実装する場合には、CSRF対策を施しましょう。 リクエストを送信する
Plugin Mobile Sticky Footer – スマホ用固定フッター

Mobile Sticky Footer – スマホ用固定フッター

Mobile Sticky Footerは、スマートフォンサイトに簡単に固定フッターを設置できるWordPressプラグインです。 選べる3タイプのレイアウト 複数ボタンタイプは2ボタンから5ボタンまで設定可能。 お問合せフォームやSNSへのリンクのほか、電話ボタンの設置も可能です。 リアルタイムプレビューつきの直感的な設定画
Column WordPressにメールフォームを自力で実装する

WordPressにメールフォームを自力で実装する

WordPressにメールフォームを実装する優秀なプラグインは沢山ありますが、 ほとんどのプラグインは非開発者向けに導入しやすさを重視して作られているため、 例えば入力項目を動的にするなど、少し複雑なことをしようと思うと、 詰んでしまいます。 WordPressにはメール送信処理やデータの保存などを簡単に実装できる
Plugin WP LOYALTY Checkout add-on – クレジットカード決済

WP LOYALTY Checkout add-on – クレジットカード決済

当サイトで使用しているプラグインです。 AD5 LOYATYのアドオンとして、決済機能を提供します。 決済サービスとして、カード決済手数料が3.0%〜と安く、個人事業主でも利用可能なPAY.JPと連携できます。 (別途PAY.JPのアカウントが必要です。)
Column WordPressのテーマファイル構成を本気出して考えてみた

WordPressのテーマファイル構成を本気出して考えてみた

エンジニアの端くれとして、たかがWordPressテーマであっても、綺麗なモジュール設計がしたいわけです。 そこで、以前作ったサイトのテーマをモチーフに、テーマファイルを再設計してみました。 対象にしたサイトは、ユーザーが会員登録し、PDFコンテンツを投稿でき、ダウンロード結果を集計できるなど、そこそこ高機
Column WordPressサイトにパンくずリストをプラグインなしで実装する

WordPressサイトにパンくずリストをプラグインなしで実装する

意外と大変なパンくずリスト WordPressサイトに限らず、SEOの面でも重要視されるパンくずリスト(breadcramb nav)。 WordPressでガチで実装すると意外と面倒ですよね。 個別投稿ページだけでも、 A. 標準投稿 HOME > 親カテゴリ > 子カテゴリ > 投稿名 B. 固定ページ HOME > 親ページ >
 
ログイン
メールアドレス
パスワード
会員登録
お名前
メールアドレス
パスワード
購入手続き
カード番号
有効期限 (MM/YY)
/
セキュリティコード (CVC)