it-swarm-vi.tech

Làm cách nào để sử dụng Plugin Wordpress Bài viết 2 Bài viết của Scribu?

Tôi có một trang Wordpress dựa trên các mối quan hệ khá nhiều. Đây là một trang web nhãn thu âm nơi các nghệ sĩ có thể liên quan đến các chuyến tham quan, đánh giá, phát hành album và lưu trữ các mặt hàng trên toàn trang web.

Tôi đã tìm thấy plugin Bài viết cho bài viết của Scribu dường như làm những gì tôi muốn, nhưng tôi không hiểu làm thế nào để sử dụng nó đúng cách. Scribu đã đăng mã ví dụ, nhưng vì một số lý do tôi không thể hiểu được nó.

Dưới đây là một ví dụ về những gì tôi muốn làm với trang web tôi đang làm việc.

Trang tham quan./

Một mục tham quan có tiêu đề và trường meta tùy chỉnh được gọi là 'Ticket_link'

Khi tải trang tham quan, tất cả các chuyến tham quan sẽ được hiển thị với nghệ sĩ được chỉ định của họ và nếu trang đó có liên kết vé, thì cũng hiển thị điều đó.

Nếu ai đó ở đây có thể hiểu mã được đăng trên trang web của Scribu cho plugin và sau đó giải thích cho tôi, tôi rất biết ơn về nó.


Đây là mã của tôi từ tệp tin.php. Đăng ký các kết nối:

    function my_connection_types() {
    if ( !function_exists('p2p_register_connection_type') )
        return;

    p2p_register_connection_type( 'tours', 'artists' );
    p2p_register_connection_type( 'homepage_carousel', 'artists' );
    p2p_register_connection_type( 'duka', 'artists' );
    p2p_register_connection_type( 'products_carousel', 'artists' );
}
  add_action('init', 'my_connection_types', 100);

Mã giả để hiển thị những gì tôi muốn làm trong mã của mình:

  • Tìm nạp tất cả các chuyến tham quan trong kho lưu trữ bài đăng tùy chỉnh của tôi bằng cách sử dụng vòng lặp để tất cả các chuyến tham quan được thêm vào trang web.
  • Mỗi tour du lịch có liên quan đến một nghệ sĩ, vì vậy hãy hiển thị tất cả các tour cho một nghệ sĩ cụ thể.
  • Các mục ở dạng tiêu đề (tên nghệ sĩ) và mỗi mục là một chuyến tham quan có liên quan đến một nghệ sĩ cụ thể trong phần phụ trợ bằng cách sử dụng metabox hiển thị do kết quả của việc đăng ký kết nối.

Cập nhật thêm cùng với mã tôi đang sử dụng và print_r value.

Tôi có các nghệ sĩ liên quan xuất hiện trong nội dung print_r của truy vấn của tôi trước khi tôi không làm. Khi tôi thực hiện print_r, tôi nhận được thông báo sau, nhưng không có cách nào truy cập dữ liệu.

[connected_connected] => Array ( [0] => stdClass Object ( [ID] => 245 [post_author] => 1 [post_date] => 2011-03-10 13:55:23 [post_date_gmt] => 2011-03-10 13:55:23 [post_content] => [post_title] => 1200 Techniques [post_excerpt] => [post_status] => publish [comment_status] => closed [ping_status] => closed [post_password] => [post_name] => 1200-techniques [to_ping] => [pinged] => [post_modified] => 2011-03-10 13:55:23 [post_modified_gmt] => 2011-03-10 13:55:23 [post_content_filtered] => [post_parent] => 0 [guid] => http://localhost/testdev/?post_type=artists&p=245 [menu_order] => 0 [post_type] => artists [post_mime_type] => [comment_count] => 0 [p2p_id] => 2 [p2p_from] => 215 [p2p_to] => 245

Mã tôi đang sử dụng để liên kết các nghệ sĩ với các chuyến tham quan như sau:

$connected = new WP_Query(array(
    'post_type' => 'tours',
    'nopaging' => true,
    'each_connected' => array(
        'post_type' => 'artists',
        'nopaging'  => true,
    ),
    'suppress_filters' => false
));

while( $connected->have_posts() ): $connected->the_post();
    the_title();
    echo "<br />";
endwhile;   

print_r($connected); // Print_r for showing contents of post object.

Cập nhật cho Scribu:

$args = array
(
    'post_type'        => 'tours',
    'nopaging'         => true,
    'suppress_filters' => false
);

$connected = new WP_Query($args);

while($connected->have_posts()): $connected->the_post();

    the_title();
    echo "<br />";

    foreach ($connected->connected AS $tour_item)
    {
        echo get_the_title($tour_item->ID);
        echo "<br />";
    }

endwhile;
5
Dwayne Charrington

Ok, ý tưởng là bạn có một vòng lặp bên ngoài, hiển thị các tour du lịch.

Và sau đó bạn có một vòng lặp bên trong, hiển thị mỗi nghệ sĩ.

Cách thức hoạt động của Loop là nó tập hợp rất nhiều biến toàn cục, chẳng hạn như $post, vì vậy nó trông giống như ma thuật.

Hãy xem xét một cách tiếp cận thống nhất hơn:

$tours = get_posts( array(
    'post_type' => 'tours',
    'nopaging' => true,
    'each_connected_to' => array(
        'post_type' => 'artists',
        'nopaging' => true,
    ),
    'suppress_filters' => false
) );

// outer loop
foreach ( $tours as $tour ) {
    echo get_the_title( $tour->ID );
    echo get_post_meta( $tour->ID, 'ticket_link', true );

    // inner loop
    foreach ( $tour->connected_to as $artist ) {
        echo get_the_title( $artist->ID );
        echo '<br/>';
    }
}

Cập nhật:Câu trả lời này đã lỗi thời; để biết ví dụ hiện tại, hãy xem https://github.com/scribau/wp-posts-to-posts/wiki/Looping-The-Loop

4
scribu