web-dev-qa-db-ja.com

のようにプログラム的にcpt publishに[Plugin:投稿2の投稿]で接続を作成するのですか?

1つのカスタム投稿タイプcpt(投稿IDがわかっている)と公開中のcptの間の接続をプログラムで作成するにはどうすればよいですか?

post-type-A という投稿タイプを公開するために、 VoodooPressのフロントエンド投稿方法 を使用しています。 ポストタイプ-A フォームの1つの入力フィールドは公開インベントリ番号です。これにより、wp_queryを使用してポストタイプの投稿IDを取得できます。との関係を築きたいB

私は this 関数を使って post-type-A から一方向の接続を作成できることを知っていますカスタムフィールドを使用して post-type-B に。

add_action('publish_page', 'add_custom_field_automatically');
add_action('publish_post', 'add_custom_field_automatically');
function add_custom_field_automatically($post_ID) {
    global $wpdb;
    if(!wp_is_post_revision($post_ID)) {
        add_post_meta($post_ID, 'field-name', 'custom value', true);
    }
}

しかし、どのようにして@ Scribuの Posts 2 Posts プラグインを使用してプログラム的に接続を作成するのですか?双方向の関係は、面倒なプログラミング時間を大幅に削減します。 :)

参考までに、以下のコードはプラグインの connect api reference です...

/**
 * Connect a post to another one
 *
 * @param int $post_a The first end of the connection
 * @param int $post_b The second end of the connection
 * @param bool $bydirectional Wether the connection should be bydirectional
 */
function p2p_connect( $post_a, $post_b, $bydirectional = false ) {
        add_post_meta( $post_a, P2P_META_KEY, $post_b );

        if ( $bydirectional )
                add_post_meta( $post_b, P2P_META_KEY, $post_a );
}
3
torinagrippa

フォーム処理コードでp2p_connect( $id_of_post_type_a, $id_of_post_type_b );を呼び出すだけです。

6
scribu