Додавання архіву повідомлень до меню навігації в WordPress 3.0


10

Хей, все, я граю разом із WordPress 3.0 та двома (2) новими функціями, типовими типами пошти та редактором меню .

Я почав із створення нового типу публікації під назвою " products", як ви здогадалися, у цьому списку продуктів.

Я використовую стандартний шаблон bog і створюю нове меню, щоб замінити верхній nav. Наскільки я бачу, я можу додати до нього лише певні "продукти" , я не можу додати "архів" продуктів. Що я намагаюся зробити - це додати посилання на меню, щоб перейти на сторінку, де перераховані ВСІ продукти.

Будь-яка ідея, як це зробити?

Відповіді:


12

@dotty Як ви бачите на цьому маршрутному квитку: повинні бути індексні сторінки для користувацьких типів публікацій, тому очевидно, що потреба ще не вирішена в ядрі WordPress.

І @John P Bloch, і @Chris_O дають хороші альтернативи; Я збираюся дати тобі 3-е.

«Продукти» Page

Спочатку створіть сторінку для власного типу публікації та назвіть її "Продукти" . Це дасть йому таку URL-адресу:

http: //example.php/products/

Короткий код "Список продуктів"

Далі створіть Короткий код, який можна вбудувати у свою сторінку "Продукти" . У своєму прикладі я це назвав [product-list]. Ось скріншот того, як це виглядатиме:

Сторінка продукту, яка використовує Швидкий код для відображення списку продуктів у WordPress
(джерело: mikeschinkel.com )

Зауважте, що такий короткий код був би чудовим кандидатом для додавання безлічі додаткових функціональних можливостей та надання йому змоги працювати для багатьох різних типів публікацій, але в інтересах ясності я дуже багато кодував все. Звичайно, ви можете використовувати його як вихідну точку для власного короткого коду:

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

post-product.phpТема шаблон файл

Далі потрібно створити файл шаблону теми, який відображатиме лише один продукт. Функція, яка реалізує короткий код, називає файл шаблону, post-product.phpі ось хороша відправна точка:

<?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>

Додайте опцію меню

Останнє ви хочете додати опцію меню. Це дуже просто, як ви можете бачити на цьому скріншоті (нижче передбачається, що ви нічого не робили з меню WordPress 3.0 і що ви використовуєте тему, яка підтримує меню WordPress 3.0, наприклад, двадцять десять):

  1. Виберіть у меню адміністратора параметр меню.
  2. Клацніть " + ", щоб додати нове меню.
  3. Введіть назву меню, що завгодно.
  4. Натисніть кнопку "Створити меню" (на знімку екрана відображається "Зберегти меню", але при додаванні це буде "Створити меню" ).
  5. Виберіть нове меню як "Первинну навігацію" .
  6. Виберіть сторінку "Продукти ".
  7. Натисніть "Додати в меню"
  8. Натисніть "Зберегти меню"

Додавання пункту меню сторінки продукту на сайт WordPress
(джерело: mikeschinkel.com )

Нарешті, вихід

Ось як може виглядати базовий список продуктів:

Список продуктів, що використовують користувальницький тип публікації в WordPress
(джерело: mikeschinkel.com )


Залишене питання полягає в тому, як змінити запис меню продуктів, щоб воно містило підменю для всіх продуктів.
хакре

@harke Оновлено.
MikeSchinkel

добре, що це не було прохання :). Мені просто було цікаво, як автоматично створюється спадне меню, і я думаю, що це все-таки не вдасться. Але як написано, це не прохання.
хакре

Привіт, у мене проблема з цим і сподіваюся, що ти можеш допомогти. Проблема в тому, що current-menu-itemклас не застосовується на продуктах 'li
Reigel

Відсутні зображення. : /
fuxia

4

Це не підтримується WordPress. Однак ви можете додати це у файл function.php, і він буде працювати:

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

Це дасть вам example.com/products/ як список товарів. Звідти ви просто додаєте спеціальне посилання у своє меню.

Однак якщо ви хочете справжнього архівування (за місяцем, роком тощо) з каналами, вам потрібен більш детальний код. Якщо ваші "продукти" є неієрархічним типом публікації (схоже, як це має бути), ви можете використовувати мій плагін:

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

Це дає додаткові поля для налаштування ваших постійних посилань (як ви можете із публікаціями блогу), а також надасть вам змогу налаштувати постійні посилання на основі категорії, автора, місяця, року, типу публікації тощо.


Дякуємо за чудову інформацію тут. Я шукаю те саме, але хоча все працює з перезаписом, я застряг, тому що, коли я додаю користувальницьке посилання в меню, загальнодоступний веб-сайт, схоже, не змінює css, що вказує на відвідувача на цій сторінці. Чи можете ви, будь ласка, дозволите мені знати, як це робиться, щоб я міг показати пункт меню в режимі "ввімкнено", якщо ви знаходитесь в архіві "товари"?
NetConstructor.com

0
Наскільки я бачу, я можу додати до нього лише певні "продукти", я не можу додати "архів" продуктів. Що я намагаюся зробити - це додати посилання на меню, щоб перейти на сторінку, де перераховані ВСІ продукти. Будь-яка ідея, як це зробити?

Вам потрібно призначити таксономію типу публікації "товари", а потім додати термін таксономії до одного з ваших спеціальних меню, яке потім переведе користувача на сторінку архіву всіх продуктів відповідно до використаної систематики.

Приклад: У мене є власний тип публікації під назвою "Робота" з таксономією з написом "позиції" alt текст

Якби я хотів, щоб усі завдання з терміном таксономії "Поточні відкриття" я вибрав би його і додав до меню. alt текст

Якщо вам потрібно мати всі типи публікацій на "продукти" на сторінці архіву, ви можете призначити батьківську систематику всім їм, щоб вони могли бути перелічені на сторінці архіву.


@Chris_O : Це один спосіб, але не єдиний спосіб, а також вимагає неабияких зусиль для підтримки категоризації користувачем. JMTCW все одно.
MikeSchinkel

Має сенс. Будемо сподіватися, що спеціальна сторінка індексу типу публікації буде адресована в основі.
Chris_O

0

Я думаю, що кращим рішенням є створення за допомогою спеціального типу публікації типу публікації «Архів» та переміщення заархівованих публікацій у цьому архіві. Також додайте поточний post_type до postmeta цього нового post_type, щоб скасувати це. Я маю написати плагін для цього, і ви можете побачити це, без таблиць стилів, зображень та мовного файлу, на gist.github / 978690 .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.