dotty
  • 0
Новичок

Добавление архива сообщений в меню навигации в WordPress 3.0

  • 0

Привет всем, я играю с WordPress 3.0 и двумя (2) новыми функциями, пользовательскими типами сообщений и редактором меню.

Я начал с создания нового типа сообщений под названием » products «, как вы уже догадались, это список продуктов.

Я использую стандартный шаблон болота и создаю новое меню, чтобы заменить верхнюю навигацию. Насколько я вижу, я могу добавить в него только определенные «продукты», я не могу добавить «архив» продуктов. Я пытаюсь добавить ссылку в меню, чтобы перейти на страницу со списком ВСЕХ продуктов.

есть идеи как это сделать?

Share
  1. @dotty Как вы можете видеть из этого билета trac: должны быть индексные страницы для пользовательских типов сообщений, поэтому очевидно, что потребность еще не решена в ядре WordPress.

    И @John P Bloch, и @Chris_O дают вам хорошие альтернативы; Я собираюсь дать вам 3-й.

    Страница «Продукты »

    Сначала создайте страницу для своего пользовательского типа сообщений и назовите ее «Продукты». Это даст ему следующий 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, такую ​​как Twenty Ten):

    1. Выберите пункт меню в меню администратора.
    2. Нажмите « + », чтобы добавить новое меню.
    3. Введите название вашего меню, как хотите.
    4. Нажмите кнопку «Создать меню» (на снимке экрана показано «Сохранить меню», но при добавлении это будет «Создать меню».)
    5. Выберите свое новое меню в качестве «Основной навигации».
    6. Выберите страницу «Продукты ».
    7. Нажмите «Добавить в меню»
    8. Нажмите «Сохранить меню».

    Добавление опции меню страницы продуктов на сайт WordPress
    (источник: mikeschinkel.com )

    Наконец, вывод

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

    Список продуктов, использующих пользовательский тип записи в WordPress
    (источник: mikeschinkel.com )

    • 0
  2. Это изначально не поддерживается WordPress. Однако вы можете добавить это в свой файл functions.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/

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

    • 0
  3. Насколько я вижу, я могу добавить к нему только определенные «продукты», я не могу добавить «архив» продуктов. Я пытаюсь добавить ссылку в меню, чтобы перейти на страницу со списком ВСЕХ продуктов. есть идеи как это сделать?

    Вам нужно будет назначить таксономию для типа сообщения «продукты», а затем добавить термин таксономии в одно из ваших пользовательских меню, которое затем перенесет пользователя на страницу архива всех продуктов в рамках используемой таксономии.

    Пример. У меня есть настраиваемый тип сообщения под названием «Работа» с таксономией, помеченной как «должности».альтернативный текст

    Если бы мне нужны были все вакансии с термином таксономии «Текущие вакансии», я бы выбрал его и добавил в меню.альтернативный текст

    Если вам нужно, чтобы все ваши типы сообщений «продукты» были на странице архива, вы можете назначить родительскую таксономию для всех них, чтобы все они могли быть перечислены на странице архива.

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

    • 0

Оставить ответ

You must login to add an answer.