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


10

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ỉnhTrì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" 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?

Câu trả lời:


12

@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 để rõ ràng nhu cầu chưa đượ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.

Một "Sản phẩm" Trang

Đầu tiên Tạo một trang cho 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/

Một "Sản phẩm List" 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 mình. Trong ví dụ của tôi, tôi đã gọi nó [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:

Trang của sản phẩm sử dụng Shortcode để hiển thị danh sách các sản phẩm trong 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ì 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 post-product.phpTheme Template file

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.phpvà đâ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ị "Lưu Menu" 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"

Thêm tùy chọn menu trang sản phẩm vào trang web WordPress
(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:

Danh sách các sản phẩm sử dụng loại bài đăng tùy chỉnh trong WordPress
(nguồn: mikechinkel.com )


Câu hỏi còn lại là làm thế nào để sửa đổi mục menu sản phẩm để nó cung cấp menu con với tất cả các sản phẩm.
hakre

@harke Cập nhật.
MikeSchinkel

tốt, đó không phải là một yêu cầu :). Tôi chỉ tự hỏi làm thế nào việc thả xuống trở nên tự động được tạo ra và tôi nghĩ điều đó vẫn không có kết quả. Nhưng như đã viết, đó không phải là một yêu cầu.
hakre

Xin chào, tôi có một vấn đề với điều này và hy vọng bạn có thể giúp đỡ. Vấn đề là current-menu-itemlớp học không được áp dụng trên các sản phẩm 'li
Reigel

Thiếu hình ảnh. : /
fuxia

4

Đ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 (giống 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.


Cảm ơn cho một số thông tin tuyệt vời ở đây. Tôi đang tìm kiếm điều tương tự nhưng mặc dù mọi thứ đều hoạt động tốt với việc viết lại Tôi bị mắc kẹt vì khi tôi thêm liên kết tùy chỉnh vào menu, trang web công cộng dường như không thay đổi css cho biết khách truy cập đang ở trên trang đó. Bạn có thể vui lòng cho tôi biết làm thế nào được thực hiện để tôi có thể hiển thị mục menu ở trạng thái "bật" nếu trong kho lưu trữ "sản phẩm" của bạn không?
NetConstructor.com

0
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 một "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, sau đó sẽ đư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í" văn bản thay thế

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. văn bản thay thế

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ể chỉ định 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ữ.


@Chris_O : Đây là một cách, nhưng không phải là cách duy nhất và cũng đòi hỏi một nỗ lực hợp lý để duy trì phân loại của người dùng. JMTCW nào.
MikeSchinkel

Có ý nghĩa. Hy vọng rằng trang chỉ mục loại bài tùy chỉnh sẽ được giải quyết trong cốt lõi.
Chris_O

0

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ó tệp định kiểu, hình ảnh và tệp ngôn ngữ, trên gist.github / 978690 .

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.