在WordPress 3.0的导航菜单中添加帖子存档


10

大家好,我正在使用WordPress 3.0和两(2)个新功能(自定义帖子类型菜单编辑器)

我首先创建了一个新的帖子类型“ products”,就像您猜到的那样,此列表类型。

我正在使用沼泽标准模板,并且正在创建一个新菜单来替换顶部导航。据我所知,我只能向其中添加某些“产品”,而不能添加产品的“存档”。我想做的是在菜单上添加一个链接,以转到列出所有产品的页面。

任何想法如何做到这一点?

Answers:


12

@dotty正如您从这张跟踪单上看到的那样:应该有用于自定义帖子类型的索引页,因此显然WordPress核心中尚未解决此需求。

@John P Bloch和@Chris_O都为您提供了不错的选择;我要给你第三。

一个“产品”页面

首先为您的自定义帖子类型创建一个页面,并将其称为“产品”。这将为它提供以下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


剩下的问题是如何修改产品菜单条目,以便它提供所有产品的子菜单。
hakre 2010年

@harke更新。
MikeSchinkel

好吧,这不是一个请求:)。我只是想知道如何自动创建下拉菜单,但我认为仍然没有用。但是按照书面规定,这不是要求。
hakre

嗨,我对此有疑问,希望您能提供帮助。是问题current-menu-item类不应用于产品 'li
Reigel

缺少图像。:/
fuxia

4

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/

这为您提供了额外的字段来自定义永久链接(就像您对博客文章一样),并使您能够根据类别,作者,月份,年份,帖子类型等自定义永久链接。


感谢您提供的一些出色信息。我正在寻找相同的东西,但是尽管重写工作一切正常,但是我被卡住了,因为当我将自定义链接添加到菜单时,公共网站似乎并没有更改css,指示访问者在该页面上。您能否让我知道这是如何完成的,所以如果您在“产品”档案中,则可以将菜单项显示为“开”状态?
NetConstructor.com 2010年

0
据我所知,我只能向其中添加某些“产品”,而不能添加产品的“存档”。我想做的是在菜单上添加一个链接,以转到列出所有产品的页面。任何想法如何做到这一点?

您需要为“产品”帖子类型分配一个分类法,然后将分类法术语添加到您的一个自定义菜单中,然后将用户带到所使用分类法下所有产品的存档页面。

示例 我有一个名为“工作”的自定义帖子类型,其分类法标记为“职位” 替代文字

如果我希望使用“当前空缺”分类术语的所有工作,则将其选中并将其添加到菜单中。 替代文字

如果需要在存档页面上拥有所有“产品”帖子类型,则可以为所有这些类别分配父分类法,以便将它们全部列在存档页面上。


@Chris_O:这是一种方法,但不是唯一的方法,并且还需要付出大量的努力才能维护用户的分类。无论如何,JMTCW。
MikeSchinkel

说得通。希望自定义帖子类型索引页面将在核心中解决。
Chris_O 2010年

0

我认为,通过自定义帖子类型创建帖子类型“存档”并在此存档中移动已存档的帖子是一个更好的解决方案。还将当前post_type添加到此新post_type的postmeta中,以撤消此操作。我为此编写了一个插件,目前,您可以在gist.github / 978690上看到此插件,没有样式表,图像和语言文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.