希望将博客帖子从类别的上一个/下一个按钮中排除

时间:2014-07-23 作者:kia4567

我正在研究一些条件元素,我以为我有它,但它仍然不能正常工作。You can see my site here.

我所做的是在这个页面上只显示类别法律献祭栏(98),并将其从博客本身中排除。完美的

但是,当你点击一篇文章来查看整篇文章,然后转到上一个或下一个链接来阅读另一篇博客文章时,它们都混淆了。

以下是我在单曲中的位置。php来防止这种情况。他们独自工作,但如果不是这样,他们会一起工作

<?php if (has_category(\'Legal Libation Columns\') && has_tag(\'Legal Libation Columns\')): ?> 
    <span class="nav-previous"><?php previous_post_link(\'%link\', \'<span class="meta-nav">&larr;</span> Previous in Legal Libation Columns\', TRUE); ?></span>
    <span class="nav-next"><?php next_post_link(\'%link\', \'Next in Legal Libation Columns <span class="meta-nav">&rarr;</span>\', TRUE); ?></span>
<?php  else: ?>
    <span class="nav-previous"><?php previous_post_link( \'%link\', __( \'<span class="meta-nav">&larr;</span> Previous\', \'toolbox\' ) ); ?></span>
    <span class="nav-next"><?php next_post_link( \'%link\', __( \'Next <span class="meta-nav">&rarr;</span>\', \'toolbox\' ) ); ?></span>
<?php endif; ?>
我基本上希望这个类别与博客完全分开。我对php或编程方法很差,关于如何更改代码来实现这一点,有什么建议吗?

更新:这就是我从博客中筛选我的类别的方式

function exclude_category($query) {
    if ( $query->is_home() ) {
        $query->set(\'cat\', \'-98\');
    }
    return $query;
}
add_filter(\'pre_get_posts\', \'exclude_category\');

2 个回复
SO网友:Brad Dalton

您可以使用从帖子页面中排除类别pre_get_posts

function exclude_category( $query ) {
    if ( $query->is_home() && $query->is_main_query() && !is_admin()) {
        $query->set( \'cat\', \'-1347\' );
    }
}
add_action( \'pre_get_posts\', \'exclude_category\' );
最好将类别slug或ID与标记一起使用。

您可能还需要查看5个参数previous_post_linknext_post_link

SO网友:Pieter Goosen

我不确定你的帖子是如何相互作用的,它们是如何通过类别和标签相互关联的,但我从你的问题中了解到的是,这一特定类别的帖子应该与你的博客完全分开。

使用内置taxonomies (类别、标记和帖子格式)和内置post types 有时可能会给出不需要的结果,因为默认情况下这些结果包含在主查询中。在这个问题上,建立一个应该以不同方式进行交互的帖子系统,并且应该与其他帖子没有关系,这可能是一个麻烦。

是的,有自定义查询(如WP_Querypre_get_posts 在执行前更改主查询,然后conditional tags 包含或排除某些元素。但这可能会变得相当笨重,只是一个大问题。

看看你的问题中给出了什么,你是否考虑过使用custom post types 与…结合custom taxonomies 对于这些你需要从博客中分离出来的帖子。

自定义帖子类型的pro

主查询中排除了帖子类型

对于每种自定义帖子类型,您都可以有单独的存档和单独的页面。请参见:Template Hierarchy

在默认帖子系统之外,自定义帖子类型可以有自己的分类法(分层或非分层)。此外,如果需要,可以将内置分类添加到自定义帖子类型中,然后与您的普通帖子系统共享

  • pre_get_posts 如果需要,可以轻松地用于在主查询中包含自定义帖子类型。

    有很多关于这些主题的插件和教程。还有一些插件可以帮助您批量更改某些帖子的帖子类型。

    这可能无法回答您的问题,但这只是您可以在不久的将来牢记的考虑事项。

  • 结束

    相关推荐

    使用AJAX和PHP加载下一个POST对象

    在浏览了jQuery文档和许多stackexchange社区论坛之后,我仍然面临这个问题。从这里和那里吸取一些经验帮助我走到了这一步,但我被困在了现在的位置上。Im使用ajax请求尝试加载当前显示的帖子之后的下一篇帖子。我遇到的唯一问题是,当我尝试执行php文件中包含的方法时:<?php echo getnext(); function getnext(){ $post = get_post($_POST[\'id\']); &