web-dev-qa-db-ja.com

カスタムテーブルを使用するための適切な方法は何ですか?

私は手動でCREATE TABLEを使ってsqlを使って私のwordpressデータベースにテーブルを追加しました。 wp_update_user()と同じように、このテーブルからデータを追加、修正、削除するための関数を追加したいです。

新しいテーブル用のインターフェースを作成する必要がありますか?どうしたらいいですか。

問題の詳細:

私はサイトのユーザーがグループ/チームに参加できるようにしたいです。データベースにチームテーブル(チームID、チームタイプ、チーム名)と結合テーブル(ユーザーID /チームIDを含む)を設定しました。これらのテーブルに関連する関数を私のpage_template.phpファイルから呼び出せるようにしたいです。

たとえば、ユーザーのフォーム入力に基づいて新しいチームをデータベースに挿入する機能を呼び出したいとします。

1
ellen

新しいテーブル用のインターフェースを作成する必要がありますか?どうしたらいいですか。

残念ながら、実装するインターフェースはありません。すべてをゼロから構築する必要があります 。これも:

  • 管理者ページ
  • 編集画面
  • 保存と更新と削除
  • すべてのクラスと機能は最初から構築する必要があります。
  • すべてのキャッシング
  • REST APIエンドポイント
  • フロントエンドのアーカイブ、テンプレート、URL、書き換え規則
  • ページ付け
  • すべてのSQL

ここで役立つと思われる唯一のWPは、SQLクエリを作成するために使用できる$wpdb変数です。

Wp_update_user()と同じように、このテーブルからデータを追加、修正、削除するための関数を追加したいです。

必要に応じて、これらすべてを最初から構築する必要があります。 WordPressはここでは何の助けにもならない

たとえば、ユーザーのフォーム入力に基づいて新しいチームをデータベースに挿入する機能を呼び出したいとします。

あなたは一から関数を構築しなければならないでしょう。あなたが何をしているのかについての推奨パスはありません、それはたまたまPHPサイトにあるのが一般的なWP開発です。 WP AP​​Iはどれも役に立ちません

私は手動でCREATE TABLEを使ってsqlを使って私のwordpressのデータベースにテーブルを追加しました

dbdelta関数を使ってテーブルを作成し、そのスキーマを更新することもできますが、これは非常に巧妙で容赦のない関数であり、CREATE TABLEステートメントを必要とします。たとえば、PRIMARYキーワードの後に​​2つのスペースを入れないと、うまくいきません。他にもたくさんの制限があります。

カスタムテーブルを使用するための適切な方法は何ですか?

ありません。探しているものが見つからないのは、それが存在しないからです。 WordPressは、サポート、ガイダンス、インフラストラクチャ、インターフェース、またはカスタムテーブルの使用に関するヘルプに関して、ほとんど何も提供していません。

一般的なベストプラクティスは、カスタムテーブルはめったに必要とされないこと、そしてほとんどの場合、カスタムテーブルの使用は何かがうまくいっていないことの兆候であると考えています。カスタムテーブルを使用するほとんどの場合は、他の場所に既に存在するテーブルと対話するためのものです。

あなた自身が人生を楽にする方法はありますか?はい!しかし、これらはWP固有のものではなく、抽象化やラッパー関数のようなPHPプログラムに適用されることは明らかです。

たとえば、一度Doctrine ORMライブラリを使用して一連のカスタムテーブルを実装しました。プラグインに含まれるWPコードはほとんどなく、スタンドアロンのPHPアプリケーションであった可能性もあります。後思考では、私はカスタム投稿タイプと非公開分類法でも同様にそれをしたかもしれません。

あなたが探すべきものは一般的なPHPカスタムテーブルのもので、WP固有のものではありません。クエリを作成するためのwpdbの外側では、行き止まりになっています


余談ですが、 カスタムユーザー分類法を使用することを検討しましたか ?分類法は投稿専用ではなく、分類法はID用です。そのIDが数値で常に同じ種類のものを参照している限り、投稿、コメント、ユーザー、住居番号などが考えられます。それらを混在させないでください。

6
Tom J Nowell