web-dev-qa-db-ja.com

Wp_postsテーブルに列を追加するにはどうすればいいですか?

自分のテーブルの更新、作成、削除を自分のサイトに接続できるようにするAPIを提供する別のサービスとWPを同期させようとしています。

そのため、サーバー上で行を作成、更新、または削除すると、行IDなど、その更新に関する詳細が表示されます。

私が同期させることを考えている方法は、カスタム投稿タイプを使用することです、そしてどちらかpost_id:1 = api_id:53のようなpost - > api関係で新しい別々のテーブルを追加することです。

またはapi_idを含む列を追加してwp_postsテーブルを変更します。

私はpost_metaとしてそれを追加するメタボックスを追加することができることを知っていますが、私はそれがどれほど効果的であるかわからないし、私がwp_postsを変更すれば、問い合わせはもっと速くなるでしょう。

それでは、どのように私はWordPress方法でwp_postsを変えることができますか?それが不可能な場合は、メタボックスを追加するか、リレーション専用にまったく新しいテーブルを作成する必要がありますか。

5
Neta Meta

技術的にはSQLでpost列を追加することができますが、バックアップスクリプト、エクスポートなどは無視する可能性があるため、注意してください。

代わりに、カスタムフィールドを使用するか、update_post_meta()関数を使用してPHPを使用して、post_metaとしてコンテンツを追加します。

メタに基づいて投稿を取得するには、単純に次のようにします。

$args = array(
        'post_type' => 'custom_post_type',
        'meta_key' => 'api',
        'meta_value' => $api_value,
      );
$posts = get_posts( $args )

または、APIキーの値を取得する

get_post_meta( $post_ID, 'api', true );
6

私はこの関係のためだけにあなた自身のテーブルを作成することを強くお勧めします。このようにして、クエリはより速くなることができます、そして、あなたはあなたの仕事を変えて、そして台無しにするWordPressのテーブル構造を心配する必要はありません(そして潜在的にあなたのコラムとそのすべてのデータを落とす).

一つ確かなことは、あなたは常に対戦相手になるIDを持つことです。

編集:このようにしてもできますが、post_metaにはもっと大きな利点があります。

4
MikeNGarrett

投稿に関するメタ情報を保存しようとしているようです。 WordPressでは、 カスタムフィールド を使用してこれを実行できます。おそらく最も役に立つと思われる関数は update_post_meta()get_post_meta() です。

3
Pat J