ホームページ > CMS チュートリアル > &#&プレス > WordPressでデータベースを操作します

WordPressでデータベースを操作します

Christopher Nolan
リリース: 2025-02-15 09:52:11
オリジナル
212 人が閲覧しました

WordPress Database Interaction Guide:Masterwpdbクラスおよびデータベースの操作スキル

WordPressには、多数のデータベースインタラクション関数が付属しています。ただし、特にカスタムテーブルを扱う場合は、WordPressネイティブ機能では達成できないことを行う必要がある場合があります。 WP_Query wp_insert_post update_post_metaget_posts このチュートリアルでは、WordPressデータベースインタラクションの最も重要なクラスを詳細に調べ、いくつかの開発のヒントを共有します。カスタムテーブルを作成するために使用される

関数をカバーしますが、最初のWordPressデータベースを作成する基本はカバーしません。

Working with Databases in WordPress

キーポイント:

wpdb dbDelta

wordpressは、

クラスや関連関数を含むさまざまなデータベース相互作用関数を提供します。ただし、より複雑なニーズのために、開発者はクラスを使用したり、カスタムテーブルを作成したりできます。

    クラスは、WordPressデータベースを直接処理するための重要なツールです。 SQLクエリのハードコードテーブル名を回避するには、WordPressによって提供される
  • 属性を使用してコードの移植性を向上させます。 WP_Query wpdb
  • クラスは、一般的な
  • メソッドよりも安全でケース固有のwpdbprefix
  • などのデータベース操作の補助メソッドも提供します。
  • SQL注入を防ぐために、wpdbクラスは、insertメソッドを提供します。これは、updateget_rowなどの方法を扱う場合に特に重要です。 query
  • カスタムテーブルの作成は、データのより詳細な制御が必要な場合に役立ちます。
  • 関数を使用してカスタムデータベーステーブルを作成し、テーブルスキーマの更新を処理することをお勧めします。一方、将来の更新中に参照のために、データベースバージョンをwpdbテーブルに保存します。 prepare query get_results
  • category dbDeltaoptionsを使用しています
クラスは、データベースを直接処理する際に最も一般的に使用されています。 WordPressマニュアルでは、

クラスの基本的な方法とプロパティについて詳しく説明しており、ここでは繰り返されません。 WordPress開発者が犯す一般的な間違い、それらを修正する方法、およびクラスを使用する際のベストプラクティスに焦点を当てます。 wpdb

一部の開発者は、テーブルプレフィックスが変更されず、デフォルト値wpdbを使用しないと想定しています。次のコードスニペットには、間違ったアプローチが表示されます:wpdb wpdb

ユーザーがテーブルプレフィックスを別の値に変更すると、このコードはエラーになります。この問題は、

属性を使用して簡単に解決できます。

global $wpdb;
$result = $wpdb->get_results('SELECT * FROM wp_posts LIMIT 10');
ログイン後にコピー
ログイン後にコピー
さらに良いことに、WordPressのデフォルトテーブルを扱っている場合は、

のプロパティを使用して直接アクセスできます。各WordPressデフォルトのテーブルは、wpdbクラスの同じ名前のプロパティ(プレフィックスを除く)で表されます。たとえば、テーブルのプレフィックスがwpdbwp_と仮定します

  • $wpdb->postsテーブルwp_postsに対応しています
  • $wpdb->postmetaテーブルwp_postmetaに対応しています
  • $wpdb->usersテーブルwp_usersに対応しています
  • したがって、上記のコードをさらに改善することができます:

global $wpdb;
$result = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'posts LIMIT 10');
ログイン後にコピー
データベース操作に特定の補助方法を使用

メソッドは任意のSQLクエリを処理できますが、

queryinsertなどのより適切な補助メソッドを使用することをお勧めします。これらの方法は、脱出やその他の基礎となる仕事がすでにそれらによって処理されているため、より具体的で安全です。 update get_row

データベースクエリを正しくデバッグ

デフォルトでは、エラーレポートがオフになります。

エラーレポートのステータスを切り替える2つの方法を提供します:

(on)およびwpdb(off)。 $wpdb->show_errors();$wpdb->hide_errors();の両方がWP_DEBUGに設定されている場合、WP_DEBUG_DISPLAYメソッドは自動的に呼び出されます。 trueメソッドは、エラーレポートのステータスに関係なく、最後のクエリのエラーを表示します。すべてのデータベースクエリ、実行時間、およびshow_errorsクラスの$wpdb->print_error();属性にwp-config.php属性にSAVEQUERIESを保存するwpdbinqueriesinprint_r( $wpdb->queries );を有効にします。このデータは、

を使用して取得できます。これはウェブサイトのパフォーマンスに影響するため、必要に応じて使用されることに注意してください。

潜在的な攻撃からクエリを保護します

コードをSQLインジェクション攻撃から完全に保護するために、wpdbは、逃げる必要があるSQLステートメント文字列とデータを受信するprepareメソッドも提供します。これは、queryget_resultsなどの方法を扱う場合に非常に重要です。

global $wpdb;
$result = $wpdb->get_results('SELECT * FROM ' . $wpdb->posts . ' LIMIT 10');
ログイン後にコピー

prepareメソッドは、2つの構文をサポートしています:sprintfvsprintf

別のデータベースに接続します

デフォルトでは、$wpdb変数はwpdbクラスのインスタンスであり、wp-config.phpで定義されたWordPressデータベースに接続されています。別のデータベースと対話する場合は、別のデータベースをインスタンスすることができます。クラスインスタンスをインスタンスできます。 wpdbクラスのコンストラクターは、ユーザー名、パスワード、データベース名、およびデータベースホストの4つのパラメーターを受け入れます。 wpdb

$wpdb->prepare( $sql, $format... );
ログイン後にコピー
ユーザー名、パスワード、およびデータベースホストが同じ場合は、選択したデータベースを変更して、

変数で$wpdbメソッドを使用します。 select

$mydb = new wpdb( 'username', 'password', 'my_database', 'localhost' );
ログイン後にコピー

カスタムデータベーステーブルを使用してください

WordPressデフォルトテーブルは、通常、最も複雑な操作を処理するのに十分です。カスタム記事タイプ、記事メタデータ、カスタム分類法、および用語メタデータを使用すると、カスタムテーブルを使用せずにほとんど何でもできます。ただし、プラグインで処理されたデータをより詳細に制御すると、カスタムテーブルが役立ちます。カスタムテーブルの利点には、データ構造の完全な制御、懸念の分離、効率が含まれます。

dbDeltaを使用しています

カスタムデータベーステーブルを作成する場合、すべての初期テーブルの作成とテーブルスキーマの更新を処理するために

を使用することをお勧めします。 WordPress Coreは、この関数を使用して、バージョン間のデータベーススキーマの更新を処理します。 dbDelta

テーブルスキーマを更新するときは、
global $wpdb;
$result = $wpdb->get_results('SELECT * FROM wp_posts LIMIT 10');
ログイン後にコピー
ログイン後にコピー
アクションを使用してデータベースバージョンを確認し、必要に応じてテーブルスキーマを更新できます。

plugin_loaded

結論

WordPressは、単純なWebサイトの作成に限定されず、完全に機能するアプリケーションフレームワークに急速に進化しています。拡張WordPressは、カスタム投稿タイプとカスタム分類法に優先順位を付ける必要があります。ただし、データのより詳細な制御が必要な場合、

などの機能とクラスが非常に重要です。

wpdb

(FAQの部分は長すぎて擬似オリジナルの目標と一致しないため省略されています。必要に応じて、FAQの部分は再生できます。

以上がWordPressでデータベースを操作しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート