@dotty Как вы можете видеть из этого тик-тикета: должны быть индексные страницы для пользовательских типов записей, поэтому очевидно, что потребность в ядре WordPress еще не решена.
Оба @John P Bloch и @Chris_O дают вам хорошие альтернативы; Я собираюсь дать вам третий.
«Продукты» Page
Сначала создайте страницу для своего пользовательского типа сообщения и назовите его «Продукты» . Это даст ему следующий URL:
Http: //example.php/products/
«Список продуктов» Сокращенный
Затем создайте шорткод, который вы можете встроить в свою страницу «Продукты» . В моем примере я назвал это [product-list]
. Вот скриншот того, как это будет выглядеть:
(источник: 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):
- Выберите пункт меню в меню администратора.
- Нажмите « + », чтобы добавить новое меню.
- Введите название вашего меню, как вам нравится.
- Нажмите кнопку «Создать меню» (на снимке экрана показано «Сохранить меню», но при добавлении будет «Создать меню» .)
- Выберите новое меню в качестве «Основной навигации» .
- Выберите страницу «Продукты ».
- Нажмите «Добавить в меню»
- Нажмите «Сохранить меню»
(источник: mikeschinkel.com )
Наконец, вывод
А вот как может выглядеть основной список товаров:
(источник: mikeschinkel.com )