Liên kết hai loại bài


8

và cảm ơn trước sự giúp đỡ của bạn.

Tôi đã thực hiện một số tìm kiếm và câu hỏi này đã được trả lời một vài lần với tham chiếu đến plugin "bài viết 2 bài viết", nhưng tài liệu về điều đó rất "mã hóa" - Tôi có thể và thoải mái nhận được tay bẩn, nhưng tôi yêu cầu tài liệu Từng bước tốt hơn so với những gì có sẵn ở đó. :)

Đây là những gì tôi cần. Tôi đang sử dụng gPress để tạo "Địa điểm" bằng cách sử dụng loại bài đăng tùy chỉnh của họ. Điều này đang làm việc tốt đáng kinh ngạc. Điều tôi cần làm là có thể thêm "Sự kiện" vào Địa điểm. Tôi có thể sử dụng loại bài đăng tùy chỉnh để nắm bắt tất cả các chi tiết sự kiện, nhưng sau đó tôi muốn có thể đính kèm Sự kiện vào một Địa điểm cụ thể và ngược lại. Nếu ai đó đang xem bài đăng Sự kiện, sẽ có một cách dễ dàng để lấy thông tin Địa điểm liên quan đến Sự kiện.

Mọi góp ý đều được đánh giá cao!

Câu trả lời:


9

Các bài đăng đến bài viết của Scribu là một plugin tuyệt vời và đơn giản, tôi chắc chắn chúng tôi có thể giúp bạn làm cho nó hoạt động. Việc sử dụng cơ bản là khá đơn giản.

giả sử các loại bài đăng tùy chỉnh của bạn được đặt tên 'place''event', đoạn mã sau sẽ đi vào tệp tin.php của chủ đề:

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 );

điều này sẽ làm cho các hộp meta để gán các mối quan hệ có sẵn trong màn hình chỉnh sửa bài đăng tùy chỉnh của bạn.

đối với các trang duy nhất và trang sự kiện, bạn có thể tạo các mẫu tùy chỉnh trong chủ đề của mình theo phân cấp mẫu WordPress single-{post_type}.php, vì vậy trong trường hợp của bạn single-event.phpsingle-place.php. bạn có thể sao chép chúng từ mẫu single.php.

để liệt kê các kết nối, chúng ta chỉ cần một chút mã trong các mẫu này bất cứ nơi nào chúng ta muốn xuất danh sách. điều này sẽ đi trong mẫu địa điểm và đầu ra các sự kiện được kết nối:

<?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();
?>

Milo, rực rỡ - đây là những gì tôi cần, và đối với một số lý do tôi đã không tìm thấy bất cứ điều gì nêu ra khá cách này, vì vậy tôi đánh giá cao thời gian bạn đã xuống móc này lên. Chúc mừng!
Giăng

1
Kể từ Phiên bản 1.4 của Post2Post, bạn nên sử dụng 'p2p_init' thay vì 'init' để đăng ký các loại kết nối.
Stephan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.