指向所有帖子的菜单链接(包括所有类别)

时间:2013-10-17 作者:urok93

在WordPress中,如何将菜单链接添加到帖子存档?我可以看到我可以添加类别存档链接,但如果我想拥有所有帖子的存档(因此包括所有类别),该怎么办

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

如果您的博客设置为显示主页上的最后一篇文章,那么您需要的链接就是主页链接,可以使用自定义链接插入该链接。

如果您的博客设置为将静态页面显示为首页,还可以创建一个页面并将其设置为“Posts page”,那么指向该页面的链接将成为帖子的链接。

如果您需要更改帖子的显示方式,例如显示的帖子数量,请使用pre_get_posts 行动挂钩,带is_home() 条件(即使站点主页是静态页面)。

add_action(\'pre_get_posts\',\'show_all_posts\');

function show_all_posts( $query ) {
  if ( ! is_admin() && $query->is_main_query() && is_home() ) {
     $query->set(\'posts_per_page\', -1);
  }
}
正如评论中所指出的,当主页设置为显示最后一篇文章时,其样式通常与普通存档不同,在这种情况下,解决方案是创建页面模板。

E、 g.创建一个名为pages-posts.php 在主题根目录中(如果主题是由第三方开发的,最好创建一个子主题)。在这个文件中

<?php
/*
Template Name: Posts Page
*/

get_template_part(\'index\'); // or \'archive\' or whatever template you want to use
之后在functions.php 添加:

add_action(\'pre_get_posts\',\'show_all_posts\');

function show_all_posts( $query ) {
  if ( ! is_admin() && $query->is_main_query() && is_page_template(\'pages-posts.php\') ) {
    $query->set(\'page\', false);
    $query->set(\'pagename\', false);
    $query->is_singular = false;
    $query->is_page = false;
    $query->is_home = true;
    $query->set(\'post_type\', \'post\');
    $query->set(\'posts_per_page\', 10);
  }
}
现在你必须create a page in dashboards, assign the page template and use this page to show posts.

这似乎是一项糟糕而艰巨的工作,但一旦WordPress不是标准帖子的特定存档,唯一的替代方法就是将查询放在pgae模板中,但在这种情况下,您将运行2个查询,一个用于检索页面,一个用于帖子,使用我的代码,您将运行一个查询,因此性能更好。

编辑2就在昨天,我发布了一个新插件Clever Rules 使用该插件,只需一行代码即可完成所需操作,无需添加任何其他页面。

安装并激活插件后,创建一个名为“myrules”的新文件。php在it中的应用:

<?php
/**
 * Plugin Name: My Rules
*/
add_action(\'plugins_loaded\', \'register_my_rules\');   
function register_my_rules() {
    if ( function_exists(\'register_clever_rule\') )
        register_clever_rule(\'/posts\')->query(\'post_type=post\')->template(\'index.php\');
}
之后,将此文件保存在插件文件夹中。转到仪表板并激活此“我的规则”插件。现在,当您访问url时,您就完成了http://yoursite.com/posts/ 您将看到使用index.php 样板如果你想的话,可以改变它。

请注意,该插件是测试版,所以没有完全测试。

结束

相关推荐

Primary and secondary menus

我试图使主菜单上的每个选项卡都链接到次菜单,这样实际上,每个主选项卡都会指向次菜单中的一组选项卡,而不是保持静态。我希望你能帮助我,我不是一个高级WP用户,所以可以使用简单的术语。更新我已经添加了代码,但它已经显示在我的网页和仪表板上,所以我一定是弄错了,所以我将其粘贴在下面,以便您可以看到。我不知道如何找到主弹头,但我想这是我在主弹头上添加的内容。function km_dynamic_secondary_menu_reg() { global $km_nav_menus;