it-swarm-vi.tech

Thêm Lưu trữ bài viết vào Menu điều hướng trong WordPress 3.0

Hay tất cả, tôi đang chơi xung quanh với WordPress 3.0 và hai (2) tính năng mới, Loại bài đăng tùy chỉnh Trình chỉnh sửa menu .

Tôi đã bắt đầu bằng cách tạo một loại bài đăng mới gọi là "products", như bạn đã đoán, danh sách sản phẩm này.

Tôi đang sử dụng mẫu tiêu chuẩn không có thật và tôi đang tạo một menu mới để thay thế điều hướng hàng đầu. Theo như tôi thấy tôi chỉ có thể thêm một số "sản phẩm" vào đó, tôi không thể thêm "kho lưu trữ" của sản phẩm. Những gì tôi đang cố gắng làm là thêm một liên kết vào menu để đi đến một trang liệt kê TẤT CẢ các sản phẩm.

Bất kỳ ý tưởng làm thế nào để làm điều này?

10
dotty

@dotty Như bạn có thể thấy bằng vé trac này: Cần có các trang chỉ mục cho các loại bài đăng tùy chỉnh vì vậy rõ ràng nhu cầu vẫn chưa được được giải quyết trong lõi WordPress.

Cả @John P Bloch và @Chris_O đều cung cấp cho bạn những lựa chọn thay thế tốt; Tôi sẽ cung cấp cho bạn một thứ 3.

A "Sản phẩm" Trang

Đầu tiên Tạo aTrangcho Loại bài đăng tùy chỉnh của bạn và gọi nó là "Sản phẩm". Điều đó sẽ cung cấp cho nó URL sau:

http: //example.php/products/

A "Danh sách sản phẩm" Shortcode

Tiếp theo tạo một Shortcode mà bạn có thể nhúng vào trang "Sản phẩm" của bạn. Trong ví dụ của tôi, tôi đã gọi nó là [product-list]. Đây là một ảnh chụp màn hình về việc sử dụng nó sẽ trông như thế nào:

 A Product's Page that uses a Shortcode to display a list of Products in WordPress 
(nguồn: mikechinkel.com )

Lưu ý rằng một shortcode như vậy sẽ là một ứng cử viên tuyệt vời để thêm nhiều chức năng tùy chọn và cho phép nó hoạt động cho nhiều loại bài đăng khác nhau nhưng vì lợi ích của sự rõ ràng, tôi đã mã hóa khá nhiều thứ. Tất nhiên bạn có thể sử dụng nó làm điểm bắt đầu cho mã ngắn của riêng bạn:

<?php
add_shortcode('product-list', 'my_product_list');
function my_product_list($args) {
  $save_post = $GLOBALS['post'];  // Save state so you can restore later
  $post_type = 'product';
  $template_file = get_stylesheet_directory() . "/post-{$post_type}.php";
  if (!file_exists($template_file)) {
    return "<p>Missing template [$template_file].</p>";
  } else {
    global $post;
    $q = new WP_Query("showposts=10&post_type={$post_type}&orderby=title&order=ASC");
    $rows = array();
    $rows[] = '<div class="post-list ' . $post_type . '-post-list">';
    global $post_list_data;
    $post_list_data = array();
    $post_list_data['post_count'] = $post_count = count($q->posts);
    foreach ($q->posts as $post) {
      $q->the_post();
      ob_start();
      include($template_file);
      $rows[] = ob_get_clean();
    }
    $rows[] = '</div>';
    $GLOBALS['post'] = $save_post;
    return implode("\n",$rows);
  }
}

Một tệp mẫu chủ đề post-product.php

Tiếp theo bạn sẽ cần tạo một tệp mẫu chủ đề chỉ hiển thị một sản phẩm. Hàm thực hiện mã ngắn đặt tên tệp mẫu post-product.php và đây là điểm khởi đầu tốt:

<?php
/**
 * post-product.php - File to display only one product within a list of products.
 */
?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
  <h2 class="entry-title"><?php the_title(); ?></h2>
  <div class="entry-content">
    <?php the_content(); ?>
  </div>
</div>

Thêm tùy chọn menu

Cuối cùng bạn sẽ muốn thêm tùy chọn menu. Điều này rất đơn giản như bạn có thể thấy từ ảnh chụp màn hình này (giả định sau đây bạn chưa làm gì với các menu WordPress 3.0 và bạn đang sử dụng một chủ đề hỗ trợ các menu WordPress 3.0 như Twenty Ten):

  1. Chọn tùy chọn menu trong menu quản trị.
  2. Nhấp vào "+" để thêm menu mới.
  3. Nhập tên menu của bạn, bất cứ điều gì bạn thích.
  4. Nhấp vào nút "Tạo Menu" (ảnh chụp màn hình hiển thị "Menu lưu" nhưng nó sẽ là "Tạo menu" khi thêm.)
  5. Chọn Menu mới của bạn làm "Điều hướng chính".
  6. Chọn trang "Sản phẩm" của bạn.
  7. Nhấp vào "Thêm vào Menu"
  8. Nhấp vào "Lưu menu"

 Adding a Products Page Menu Option to a WordPress Site 
(nguồn: mikechinkel.com )

Cuối cùng, đầu ra

Và đây là danh sách sản phẩm cơ bản có thể trông như thế nào:

 A List of Products using a Custom Post Type in WordPress 
(nguồn: mikechinkel.com )

12
MikeSchinkel

Điều này không được hỗ trợ bởi WordPress. Tuy nhiên, bạn có thể thêm phần này vào tệp tin.php. Nó sẽ hoạt động:

function give_me_a_list_of_products(){
  add_rewrite_rule( 'products/?$', 'index.php?post_type=products', 'top' );
}

add_action( 'init', 'give_me_a_list_of_products' );

Điều đó sẽ cung cấp cho bạn example.com/products/ dưới dạng danh sách các sản phẩm. Từ đó, bạn chỉ cần thêm một liên kết tùy chỉnh vào menu của bạn.

Tuy nhiên, nếu bạn muốn lưu trữ thực sự (theo tháng, năm, v.v.) với các nguồn cấp dữ liệu, bạn cần mã chi tiết hơn. Nếu 'sản phẩm của bạn là loại bài đăng không phân cấp (có vẻ như chúng phải vậy), bạn có thể sử dụng plugin của tôi:

http://www.wordpress.org/extend/plugins/custom-post-permalinks/

Điều đó cung cấp cho bạn các trường bổ sung để tùy chỉnh permalinks của bạn (như bạn có thể với các bài đăng trên blog) và sẽ cung cấp cho bạn khả năng tùy chỉnh permalinks dựa trên danh mục, tác giả, tháng, năm, loại bài đăng, v.v.

4
John P Bloch

Tôi nghĩ rằng, đó là một giải pháp tốt hơn để tạo thông qua loại bài đăng tùy chỉnh Lưu trữ loại bài đăng và di chuyển các bài đăng lưu trữ trong kho lưu trữ này. Đồng thời thêm post_type hiện tại vào postmeta của post_type mới này để hoàn tác điều này. Tôi đã viết một plugin cho cái này và hiện tại bạn có thể thấy cái này, không có bảng định kiểu, hình ảnh và tệp ngôn ngữ, trên Gist.github/978690 .

0
bueltge
Theo như tôi thấy tôi chỉ có thể thêm một số "sản phẩm" nhất định vào nó, tôi không thể thêm "kho" sản phẩm. Những gì tôi đang cố gắng làm là thêm một liên kết vào menu để đi đến một trang liệt kê TẤT CẢ các sản phẩm. Bất kỳ ý tưởng làm thế nào để làm điều này?

Bạn sẽ cần gán phân loại cho loại bài đăng "sản phẩm" sau đó thêm thuật ngữ phân loại vào một trong các menu tùy chỉnh của mình để đưa người dùng đến trang lưu trữ của tất cả các sản phẩm theo phân loại được sử dụng.

Ví dụ Tôi có một loại bài đăng tùy chỉnh được gọi là "Công việc" với phân loại được gắn nhãn "vị trí" alt text

Nếu tôi muốn tất cả các công việc với thuật ngữ phân loại "Mở hiện tại", tôi sẽ chọn nó và thêm nó vào menu. alt text

Nếu bạn cần có tất cả các loại bài đăng "sản phẩm" của mình trên trang lưu trữ, bạn có thể gán phân loại cha mẹ cho tất cả chúng để tất cả chúng có thể được liệt kê trên trang lưu trữ.

0
Chris_O