問題描述

並提前感謝您的幫助。

我已經做了一些搜尋,這個問題已經回答了幾次,參考 「帖子 2 帖子」 外掛,但檔案是非常”coder-centric” – 我能夠和舒適地讓我的手髒,但我確實需要比那裡更好的 Step-by-Step 檔案。 🙂

這就是我需要的。我使用 gPress 使用他們的自定義帖子型別生成”Places” 。這是非常好的工作。我需要做的是能夠將”Events” 新增到一個地方。我可以使用自定義的帖子型別來捕獲所有的事件詳細資訊,但是我希望能夠將事件附加到特定的位置和 vice-versa 。如果有人正在檢視活動資訊,那麼還有一個簡單的方法可以拉出與活動相關的地點資訊。

任何建議讚賞!

最佳解決方案

Scribu’s posts-to-posts 是一個很好的和簡單的外掛,我相信我們可以幫你找到它。 basic usage 非常簡單。

假設您的自定義帖子型別被命名為'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 template hierarchy 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();
?>

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。