2019年6月4日SHAREツイートシェアはてブLINEPocketWordPressを使ってWebアプリを作る際にPodsを利用することにしました。Podsについてまだ勉強中なのと、日本語で書かれた情報が少ないので、ここで調べたことをメモとして随時更新していきます。完全に自分用の学習メモを公開しているだけなので、”超読みづらい”です。管理画面からのデータの登録メモそしてまだまだ更新が続く...まずはPodsについて簡単に説明WordPressで独自のテーブルを作りたい時は、実際にテーブルを作るのではなく、カスタム投稿タイプを使ってwp_postsテーブルのpost_typeを新規に作ることで対応するのが基本となります。例)注文テーブルが欲しい×:orderテーブルを作る○:post_typeにorderを追加するただし、この方法だとwp_postsテーブル内に必要なカラムを追加できないので、wp_postsテーブルに紐づくwp_postmetaテーブルを利用することになります。注文テーブルに購入者(purchaser)というカラムを持たせたいような場合だと、post_typeがorderとして作成したデータのIDを持つkeyがpurchaserというデータをwp_postmetaテーブルに作成します(言葉にするとややこしい)。次に新規で作成したカスタム投稿タイプに、データを登録するための登録画面を作成する必要があります。(ここまでの作業について詳しくはこちらのスライドの65ページ目からがわかりやすいです。)ここまでの流れを実装するのはとても手間がかかりますが、Podsを使うとこれらの作業が劇的に楽になります。podsで新規作成を行うと、上記のことがPHPのコードを書くことなくWebページ上でまるで新規テーブルを作っているかの様に自然に行うことができます。post_typeやmetaテーブルのことを気にしないで済みます。登録画面も自動で生成してくれるので、コーティングなしで新規で追加したポストタイプのCRUDができるようになります。■2019年6月追記Podsの使い方を動画で解説しました。こちらも合わせてご覧ください。Types(以降、ACT)という拡張機能を利用して新規テーブルを作ることも可能ですが、この拡張機能はデフォルトではオフになっています。Componentsページでは、ACTよりはカスタムコンテントタイプの利用を強く推奨されています。instead.また、WordPressでWebアプリを作るときは既存テーブルがいいのか?カスタムテーブルがいいのか?にもカスタムコンテントタイプのテーブルを利用したほうがいい理由をまとめているのでご覧ください。Pagesも用意されています。PagesはACTと一緒に使うことが前提となっています。Types.カスタム投稿タイプを作る作成したカスタム投稿タイプのExport/Importカスタム投稿タイプを開発環境で作った後に、同じ設定をテスト環境や本番環境に行う必要がありますが、これを手動で行うのは手間がかかりますし、ミスも起こりやすくなります。Packagesを利用すると、設定した内容を手間なくミスなくExport/Importできるようになります。Queryableのチェックを外す。プレビューも行えなくなるので注意が必要。その他の設定項目の詳細はこのページを参照のこと。Capabilityを設定した場合は、Administrator権限でも管理画面のメニューに作成したカスタム投稿タイプが表示されなくなる。Capabilitiesを有効化して、administratorに作成したpost_typeに関する権限をONにする必要がある。※値がユニークであるかのバリデーションはこのスレッドによるとまだ実装されていない模様。tagsを利用すると簡単に実現できます。すれば、アウトプットのサニタイジングも可能(らしい)データの抽出データの絞り込みはfindを使います。);findの結果が複数行ある場合の結果の取得方法dataを利用すると結果を配列として取得できます。ACTの場合、リレーションシップフィールドは配列に含まれないので注意が必要です。fetchを使うと全てのデータが取得できるので、こちらの方が無難でしょう。7”のように記述できます。リレーションシップフィールドとして定義している場合(下の例ではclientというテーブルがリレーションシップフィールド)は、以下のように記述する必要があります。byを使う場合は以下のようにselectとgroupbyをセットで記述します。);formを使ったデータの登録Podsのformを使うと管理画面からだけではなく、フロントエンドからもデータの登録を行うことが簡単に可能になります。登録前に入力値をバリデーションしたり、登録と同時に他の処理も実行したいといったときには、フィルターとアクションを使えば実現可能です。画面上で編集したいフィールドはform関数の第一パラメーターに配列として渡します。‘hidden’にする。WHEREにWHERE句を指定することで絞り込みができます。Tagsの詳細はこちらをご覧ください。この方法を使うと管理者画面では設定したカラムがSQLエラーとなることがあるので注意が必要です。データの保存や削除に関連したフィルターとアクションこちらにデータの保存や削除を実行した際にフックされているフィルターとアクションがまとまっています。これらのフィルターやアクションに渡されるパラメーターの中身はこのページで説明されています。ここに登録されているフィールドしか、データ更新時にDBに反映されないので注意が必要です。owners)↑の場合はpriceフィールドとownersフィールドのみ、DB内のデータが更新されます。]に配列を追加する例はこのページで紹介されています。※この方法はpost_titleには使えません。fields.とのことです。‘pod_meta_%my_meta_name%’]が存在しないので機能しません。データのデバッグformを使った際のデータ処理はAJAXで行われるためデバッグが困難です。これだとecho的な使い方しかできないので、複雑なデバッグには向いていません。先ほど紹介したページの後半にデバッグ用のコードが提供されているのでそれを利用するのがいいでしょう。Consoleを使っています。errorメモ※formを使った場合、カスタム投稿タイプに設定したユーザー権限に関係なくデータを編集できてしまうので注意が必要(例:edit_posts権限がなくてもポストできてしまう)。formを使っているページのコードで権限ごとに書き分ける必要がある。requiredの様に英語でエラーメッセージが表示されてしまう。これはJSでハードコーディングされているため。このページによると3.0で修正される模様。formを使わないデータの登録データの追加にはaddを使います。データを一度に複数行追加するにはimportを使います。データの更新にはsaveを使います。リレーションシップフィールドへの追加にはadd_toを使います。リレーションシップフィールドへの追加Podsではリレーションシップは通常のRDBの外部キーを使うそれと異なり、リレーションシップ専用のテーブル(wp_podsrel)で管理しています。(詳細はこちら)ACTのテーブルの場合は、リレーションシップフィールドが実テーブルに存在しないため、データの登録時に次の二段階を踏む必要があります。この例ではresultsというテーブルにclientというリレーションシップフィールドがあると仮定しています。7);管理画面からのデータの登録カスタム投稿タイプを作成すると、管理画面からデータが登録できるようになります。WHEREにSQLのWhere句を書くことでフィルターができますが、このスレッドによると、Where句にパラメーターを渡すことは現段階ではできないようです。:PodsWordPressでWebサービスを作るならテーマはOnePressがお勧め!Wordpressで二年間WEBサービスを作ってきて思うことWordPressで投稿時にバリデーションを行う方法WordPressにStripeを使ったクレジットカードの決済フォームを導入する方法WordPressで簡単にフロントエンドからデータを入力できるようにする方法WordPressのことで困ったらワードプレス・レスキューがお勧め(自薦)^^前の記事WP-Members:ユーザーの登録時にdisplay_nam...次の記事WordPressで簡単にフロントエンドからデータを入力できる...プロフィール深谷正人こんにちは!マッチングサービス構築アドバイザーの深谷正人です!40歳の時にノープランでマイクロソフトを辞めて起業したものの、最初の1年半は何をやっても上手くいかずほぼ無収入。それでもあきらめずに挑戦を続けて、2つのマッチングサービスを運営したり、スモールビジネスのオーナー向けに稼げるホームページの作り方を教えたりと、自由な働き方と収入の両立した生活を送っています。現在はマッチングサービスの作り方を教えているので興味があったら、ぜひページを見てくださいね。特定商取引法に関する。