web-dev-qa-db-ja.com

2つの投稿タイプをリンクする

ご協力ありがとうございます。

私はいくつかの検索をしました、そして、この質問は "posts 2 posts"プラグインを参照して2、3回答えられました、しかし、それに関するドキュメンテーションは非常に "コーダー中心の"です - 私は私を得ることができて快適です手が汚いが、私はそこで利用可能なものより良いステップバイステップのドキュメントが必要です。 :)

これが私が必要なものです。 gPress を使用して、カスタム投稿タイプを使用して「場所」を生成します。これは驚くほどうまくいっています。私がする必要があるのはPlaceに "Events"を追加できるようにすることです。カスタム投稿タイプを使用してすべてのイベントの詳細を取り込むことができますが、それからイベントを特定の場所に添付できるようにしたい、またはその逆も可能です。誰かがイベントの投稿を見ていたら、イベントに関連した場所情報も引き出す​​ためのやや簡単な方法があるでしょう。

任意の提案は大歓迎です!

8
John

Scribu'sposts-to-posts は素晴らしくシンプルなプラグインです。私たちはあなたがそれを機能させるのを助けることができると確信しています。 基本的な使用法 は非常に簡単です。

カスタム投稿タイプの名前が'place'および'event'であると仮定すると、次のコードがテーマのfunctions.phpファイルに追加されます。

function my_connection_types() {
    p2p_register_connection_type( array(
        'name' => 'events_to_places', 
        'from' => 'event',
        'to' => 'place',
    ) );
}
add_action( 'p2p_init', 'my_connection_types', 100 );

これにより、カスタム投稿編集画面で利用可能な関係を割り当てるメタボックスが作成されます。

単一の場所とイベントページでは、WordPress テンプレート階層single-{post_type}.phpに従ってテーマにカスタムテンプレートを作成できます。したがって、single-event.phpsingle-place.php。これらをsingle.phpテンプレートから複製できます。

接続をリストするには、リストを出力する場所に関係なく、これらのテンプレート内に少しのコードが必要です。これはプレーステンプレートに配置され、接続されたイベントを出力します。

<?php
$connected = new WP_Query( array(
    'connected_type' => 'events_to_places', 
    'connected_items' => get_queried_object()
) );

echo '<p>Related events:</p>';
echo '<ul>';
while( $connected->have_posts() ) : $connected->the_post();
    echo '<li>';
    the_title();
    echo '</li>';
endwhile;
echo '</ul>';

wp_reset_postdata();
?>
9
Milo