WordPress上級(jí)ガイド:カスタムデータベーステーブルの作成と管理

まずは、カスタム?データベース?テーブルの作成に必要なリソースへの秘密のパスを見(jiàn)つけましょう。ステップバイステップのガイドで、これらのテーブルを一歩ずつ構(gòu)築する方法を?qū)Wぶことができると思います。最後に、新しく作成されたデータベース?テーブルと効果的にやり取りし、このデータをスムーズに管理?利用できるようにする方法を見(jiàn)ていきます。全工程を順を追って説明していきますので、初心者の方でも、ある程度の基礎(chǔ)知識(shí)をお持ちの開(kāi)発者の方でも、貴重な知識(shí)とスキルを身につけることができるでしょう。

なぜカスタム?データベース?テーブルを作成するのか?

WordPressのデフォルトのデータベース?アーキテクチャは、ほとんどすべてのタイプのコンテンツ?ニーズに対応できる。カスタム投稿タイプを登録し、投稿メタデータを利用することで、必要なデータのほとんどを簡(jiǎn)単に扱うことができる。

イメージ[1] - WordPress上級(jí)ガイド:カスタムデータベース?テーブルの作成と管理 - Photon Flux|プロフェッショナル?ワードプレス修理サービス、グローバル展開(kāi)、迅速な対応

しかし、標(biāo)準(zhǔn)的なアーキテクチャーでは不十分な特殊な狀況に遭遇することもある。

eコマースサイトの場(chǎng)合、カスタム投稿タイプは商品に適しています。タイトル、畫像、詳細(xì)な説明など、商品ページに必要な情報(bào)は通常の投稿とほとんど同じだからです。追加情報(bào)が必要な場(chǎng)合は、投稿のメタデータを通して追加することもできます。

これは、通常の投稿とはまったく異なる情報(bào)を含む注文の場(chǎng)合ではないので、注文情報(bào)をカスタムデータベーステーブルに置く方が適切でしょう。

要するに、デフォルトのデータベース?スキーマに収まらないデータを扱う必要がある場(chǎng)合、獨(dú)自のカスタム?データベース?テーブルを作成するのは良い選択肢です。

情報(bào)の入手先

WordPressの開(kāi)発者向けドキュメントにはカスタムデータベーステーブルに関する記述はありませんが、Codexと呼ばれる古いバージョンの開(kāi)発者向けドキュメントには記述されています。Codex のプラグインでテーブルを作成するページで、カスタム?データベース?テーブルに関するすべての情報(bào)を見(jiàn)つけることができる。

カスタム?データベース?テーブルの作成

畫像[2] - WordPress上級(jí)ガイド:カスタムデータベーステーブルの作成と管理 - Photonflux.com|プロフェッショナルなWordPress修理サービス、グローバルリーチ、迅速な対応

まず最初に気づくのは、これは通常プラグインで行われるということだ。

さらに、プラグインを有効化する際に、関數(shù)を使用してカスタマイズを作成することが可能であり、推奨されます。登録_activation_hook けい.

これにより、この関數(shù)はプラグインがロードされるたびに実行されるのではなく、一度だけ実行されるようになる。

テーブル作成

プラグインを有効にしたカスタムテーブルを作成するには、いくつかのものを使用する必要があります。

まず、テーブル作成を管理する関數(shù)を作成する:

関數(shù)wp_learn_create_database_table() { {
}

次に$wpdb治安情勢(shì)WordPressデータベースオブジェクトなぜなら、データベースとやりとりするのに必要なメソッドがすべて含まれているからだ。

これにより、WordPressデータベースの接頭辭を使用して新しいテーブル名を設(shè)定できます。

関數(shù)wp_learn_create_database_table() {
    function wp_learn_create_database_table() { global $wpdb.

    $table_name = $wpdb->prefix . 'custom_table';
}

にもアクセスできる。get_charset_collate方法論このメソッドは、データベースの正しい文字セットとソートルールを返します。

    $charset_collate = $wpdb->get_charset_collate();

テーブルを作成するには、データベース上でSQL文を?qū)g行するためにSQLを理解する必要があります。これはdbデルタ?関數(shù)完了した。dbデルタこの機(jī)能は通常、WordPressの更新時(shí)にデフォルトのWordPressテーブルを更新または変更する必要がある場(chǎng)合に使用されます?,F(xiàn)在のテーブル構(gòu)造をチェックし、希望するテーブル構(gòu)造と比較し、必要に応じてテーブルを追加または変更します。

畫像[3] - WordPress上級(jí)ガイド:カスタムデータベーステーブルの作成と管理 - Photonflux.com|プロフェッショナルなWordPress修理サービス、グローバルリーチ、迅速な対応

を使用する。dbデルタSQL文を特定の方法で書く必要がある。

コーデックスでご覧いただけます。これらの要件の詳細(xì)については、このページの「フォームの作成または更新」セクションを參照してください。

SQL文を作成したら、それを関數(shù)dbデルタ.これはwp-admin/includes/upgrade.php関數(shù)宣言を含むファイルがそれを行う。

関數(shù)wp_learn_create_database_table() {
    function wp_learn_create_database_table() { global $wpdb.

    $table_name = $wpdb->prefix . 'custom_table';

    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT、
        time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL、
        name tinytext NOT NULL、
        text text NOT NULL, url varchar(55)
        url varchar(55) DEFAULT '' NOT NULL, PRIMARY KEY (id)
        PRIMARY KEY (id)
    ) $charset_collate;";

    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    dbDelta( $sql );
}

この例では、次のような名前の新しいテーブルが作成されている。カスタムテーブル5つのフィールドを持つ5つのフィールドを持つ: an id時(shí)間名稱aテキストそして urlそうだ。そうだ。id自動(dòng)インクリメント整數(shù)、はい時(shí)間日付時(shí)間フィールド, はい名稱tinytextフィールドテキストテキストフィールド、urlはvarcharフィールドである。これはidは主キーである。

この関數(shù)をプラグインの有効化フックにフックすることで、プラグインが有効化されたときにテーブルが作成されるようになります。

register_activation_hook( __FILE__, 'wp_learn_create_database_table' ).

データ挿入

プラグインの有効化フックを使って、プラグインが有効化されたときにテーブルにデータを挿入することもできます。

そのためには、オブジェクトインサート方法論$wpdb挿入されるフィールドの名前と値の配列を渡す。

例を挙げよう。

register_activation_hook( __FILE__, 'wp_learn_insert_record_into_table' );
関數(shù) wp_learn_insert_record_into_table(){
    function wp_learn_insert_record_into_table(){ global $wpdb.

    $table_name = $wpdb->prefix . 'custom_table';

    $wpdb->insert(
        $table_name、
        array(
            'time' => current_time( 'mysql' )、
            'name' => 'John Doe'、
            'text' => 'Hello World!
            'url' => 'https://wordpress.org'
        )
    );
}

更新データ

カスタム?テーブルのデータを更新するには更新このオブジェクトのメソッド$wpdb更新されるフィールドの名前と値を渡す配列と、更新されるレコードのフィールドの名前と値を見(jiàn)つける配列。

関數(shù) wp_learn_update_record_in_table() { {
    global $wpdb.

    $table_name = $wpdb->prefix . 'custom_table';

    $wpdb->update(
        $table_name、
        array(
            'time' => current_time( 'mysql' )、
            'name' => 'Jane Doe'、
            'text' => 'Hello Planet!
            'url' => 'https://wordpress.org'
        ),
        array( 'id' => 1 )
    );
}

この例では、id 1のレコードが新しい値で更新される。

データを選択

オブジェクトの使用結(jié)果を得るカスタム?テーブルからデータを選択するメソッド$wpdb.結(jié)果を得る有効な SELECT SQL 文を受け付けます。

関數(shù) wp_learn_select_records_from_table() { {
    global $wpdb.

    $table_name = $wpdb->prefix . 'custom_table';

    $results = $wpdb->get_results( "SELECT * FROM $table_name" );

    foreach ( $results as $result ) { $result->$result->$result->$result
        echo $result-&gt;name . ' . $result-&gt;text . '<br>';
    }
}

デフォルトでは、get_resultsはオブジェクトの配列を返し、それをループして行フィールドにプロパティとしてアクセスすることができる。

クリーン

カスタマイズしたフォームを削除することも可能です。これを行うにはクエリーこのオブジェクトのメソッド$wpdbにテーブルを削除するSQL文を渡します。

関數(shù) wp_learn_delete_table() { {
    global $wpdb.

    $table_name = $wpdb->prefix . 'custom_table';

    $wpdb->query( "DROP TABLE IF EXISTS $table_name" );
}

ねばなりませんクエリーメソッドは有効なSQLクエリを?qū)g行しますが、この関數(shù)はクエリのクリーンアップを行わないので、データの挿入や更新を行わないクエリにのみ使用するのがベストです。

あなたの要件またはプラグインユーザーの要件に応じて、2つの方法でテーブルを削除することができます。

プラグインを無(wú)効化した後、プラグインのユーザーがこのテーブルのデータを必要としない場(chǎng)合は、そのデータをプラグイン停止フックこのアクションは

register_deactivation_hook( __FILE__, 'wp_learn_delete_table' ).

しかし、そのテーブルのデータが重要で、プラグインが無(wú)効化されてもユーザーがそれを保持したい場(chǎng)合は、プラグインの利用可能なつのアンインストール方法そのうちのひとつがテーブルを削除する。

例えば登録_アンインストールフック.

register_uninstall_hook( __FILE__, 'wp_learn_delete_table');

あるいは、テーブルをそのままにしておいて、ユーザーがそれをどうするか決めることもできる。

通常、プラグインをアンインストールする際に、ユーザーがテーブルを保持したいかどうかを確認(rèn)し、アンインストール方法のいずれかを使用することをお?jiǎng)幛幛筏蓼埂?/p>

はんけつをくだす

このチュートリアルでは、カスタムテーブルの基本について簡(jiǎn)単に説明しました。今後のチュートリアルでは、これらのテクニックを?qū)g際のプロジェクトでどのように適用するかについて、より深く掘り下げていきます。


お問(wèn)い合わせ
チュートリアルが読めない?無(wú)料でお答えします!個(gè)人サイト、中小企業(yè)サイトのための無(wú)料ヘルプ!
カスタマーサービス WeChat
カスタマーサービス WeChat
電話:020-2206-9892
QQ咨詢:1025174874
Eメール:info@361sale.com
勤務(wù)時(shí)間: 月~金、9:30~18:30、祝日休み
? 複製に関する聲明
この記事はハリーが執(zhí)筆しました。
終わり
好きなら応援してください。
クドス0 分かち合う
おすすめ
解説 ソファ購(gòu)入

コメントを投稿するにはログインしてください

    コメントなし