2010-11-03 26 views
22

Làm cách nào để bao gồm nội dung trang của một hoặc nhiều trang trong một trang khác?Wordpress: bao gồm nội dung của một trang trong một trang khác

ví dụ: Tôi có trangA, trangBpageC và tôi muốn bao gồm các nội dung của các trang này trong Trang X

là có một chức năng wordpress đó tải các bài của một trang/bài được chỉ định?
như show_post ("pageA") ??

+0

Cách đơn giản nhất có thể [plugin này] (http://wordpress.org/plugins/insert-pages/) – Chris

Trả lời

42

Hi @dany:

Không có một chức năng show_post() cho mỗi gia nhập trong WordPress lõi nhưng nó là vô cùng dễ dàng để viết:

function show_post($path) { 
    $post = get_page_by_path($path); 
    $content = apply_filters('the_content', $post->post_content); 
    echo $content; 
} 

Lưu ý rằng điều này sẽ được gọi với con đường của trang , nghĩa là:

<?php show_post('about'); // Shows the content of the "About" page. ?> 
<?php show_post('products/widget1'); // Shows content of the "Products > Widget" page. ?> 

Tất nhiên tôi có thể sẽ không đặt tên cho chức năng như thường là show_post() trong trường hợp lõi của WordPress bổ sung thêm một hàm có tên tương tự trong tương lai. Sự lựa chọn của bạn mặc dù.

Ngoài ra, và không có ý nghĩa gì đối với @kevtrout vì tôi biết anh ấy rất tốt, hãy cân nhắc đăng câu hỏi WordPress của bạn lên trang web chị em của StackOverflow WordPress Answers trong tương lai. Có một tỷ lệ phần trăm cao hơn những người đam mê WordPress trả lời các câu hỏi ở đó.

Hy vọng điều này sẽ hữu ích.

-Mike

+0

Ồ, chính xác những gì tôi muốn. Cảm ơn bạn rất nhiều Mike !! Và cảm ơn bạn đã liên kết. – Zebra

+1

@dany - Bạn được chào đón.Hãy đến qua để WordPress trả lời thời gian tiếp theo và bạn sẽ thấy nhiều hơn như thế này ... :) – MikeSchinkel

+0

là có cách nào để làm điều này với các mục cá nhân? – sat

1
<?php query_posts('p=43'); 

global $more; 
//set $more to 0 in order to only get the first part of the post 
$more = 0; 

    // the Loop 
    while (have_posts()) : the_post(); 

    // the content of the post ?> 
    the_title(); 
    the_content(); 

    endwhile; ?> 

Đây rõ ràng là một phần của bài đăng, tôi nhận được thông tin chi tiết từ codex wordpress.

+0

Cậu được sắp xếp? – Stuart

0

Thú vị ... Tôi nhìn xung quanh để biết cách nhúng nội dung Wordpress nơi khác (như trong, trên một trang web khác), và tìm thấy một số điều ...

  • www. shooflydesign.org/buzz/past/embedding_wordpress. html
    • Cho biết cách nhúng nội dung Wordpress vào một trang web khác bằng tập lệnh php; có lẽ chỉ cần sử dụng cùng một điều để nhúng Wordpress vào chính nó?
  • www. corvidworks. com/articles/wordpress-content-on-other-pages
    • Khái niệm tương tự; nhúng Wordpress trên một trang khác; chỉ cố gắng sử dụng công cụ trong một bài đăng WP mới
  • feeds mình
    • tôi tìm kiếm kéo lên một số gợi ý để chỉ cần sử dụng một thức ăn vào blog của riêng bạn để nhúng vào một bưu điện. Không có gì ngăn cản điều đó. Bạn có thể muốn nó tự động và do đó cơ cấu lại nguồn cấp dữ liệu để nhìn đúng có thể là vấn đề, nhưng nó đáng để quay tùy thuộc vào những gì bạn muốn làm.

Hy vọng chúng hữu ích. Mặc dù tất cả chúng đều là giải pháp để nhận nội dung WP của bạn ở một số địa điểm khác so với WP ... chúng có thể hoạt động cho câu hỏi của bạn và cho phép bạn hiển thị A, B và C trên X.

+0

Cảm ơn, Im đã thử đề xuất của bạn – Zebra

2

Trang chỉ là bài đăng , với một post_type của 'trang' trong cơ sở dữ liệu. Bạn có thể hiển thị nội dung của nhiều trang trên một trang khác bằng cách viết truy vấn bài viết trong mẫu pageX của bạn để nhận các bài đăng bạn chỉ định và xuất chúng trong một Vòng lặp.

Có ba cách để có được nội dung bài từ cơ sở dữ liệu:

  1. get_posts
  2. query_posts
  3. WP_Query

Các liên kết tất cả các điểm đến WordPress Codex. Get_posts và query_posts có một đối số có sẵn, 'page_id', nơi bạn có thể chỉ định id của trang bạn muốn truy xuất và hiển thị.

+0

@ketrout: cảm ơn bạn đã liên kết – Zebra

0

Có một chức năng Wordpress để hiển thị nội dung của một trang cụ thể bên khác sử dụng query_posts() đó là:

<?php query_posts("posts_per_page=1&post_type=page&post_id=134"); the_post(); ?> 

Bạn đặt số trang được hiển thị tới 1 , loại bài đăng là trang thay vì bài đăng và id trang

+0

query_posts sẽ không cho phép cuộc gọi 'post_id', nhưng thay vào đó phải sử dụng 'p'. Mã as-is sẽ hoạt động, nhưng thay vào đó nó sẽ trả lại trang được tạo gần đây nhất. Mã cố định bên dưới sẽ trả về 'post_id' được chỉ định. ' ' – nuclearsugar

2

Bạn có thể cài đặt Plugin "Improved Include Page". Sau khi cài đặt, bạn tạo trang X và nhập:

[include-page id="123"] 
[include-page id="124"] 
[include-page id="125"] 

nơi đây là những ID của trang A, B và C lần lượt là

1

tôi thấy this answer đăng tải trên diễn đàn Wordpress. Bạn thêm một đoạn mã nhỏ vào hàm functions.php và sau đó chỉ cần sử dụng một shortcode bất cứ khi nào bạn muốn.

function get_post_page_content($atts) { 
     extract(shortcode_atts(array(
      'id' => null, 
      'title' => false, 
     ), $atts)); 

     $the_query = new WP_Query('page_id='.$id); 
     while ($the_query->have_posts()) { 
      $the_query->the_post(); 
       if($title == true){ 
       the_title(); 
       } 
       the_content(); 
     } 
     wp_reset_postdata(); 

    } 
    add_shortcode('my_content', 'get_post_page_content'); 

Đối với shortcode,

[my_content id="Enter your page id number" title=Set this to true if you want to show title /] 
Các vấn đề liên quan