【问题标题】:WordPress - producing a list of posts filtered by tag and then categoryWordPress - 生成按标签和类别过滤的帖子列表
【发布时间】:2010-11-04 02:19:40
【问题描述】:

我正在尝试创建一个页面上有六个列表的 WordPress 网站,每个列表显示来自不同类别的帖子。很简单。

但是,如果用户选择了一个标签,将他们带到该标签存档页面,我希望他们仍然看到六列表模板,但每个类别中的所有帖子也被标签过滤。因此,帖子列表首先按标签过滤,然后按类别过滤。

据我所知,没有办法使用 query_posts 或任何东西来做到这一点,它需要更高级的数据库使用,但我不知道如何做到这一点!我认为这里有一个类似的问题,但是因为我对 PHP 知之甚少,也没有 MySQL,所以我无法理解答案!

【问题讨论】:

    标签: php mysql wordpress tags


    【解决方案1】:

    根据the Wordpress API,您可以在对query_posts 的调用中按标签过滤。

    例子:

    query_posts('tag=cooking');
    
    query_posts('tag=bread,baking');
    
    query_posts('tag=bread+baking+recipe');
    

    【讨论】:

    • 不幸的是,这个查询会覆盖一个类别,你不能用它来过滤标签内的类别,它只会显示该类别的所有帖子以及该标签内的所有帖子。
    • 您最初可以调用 get_query 来获取按标签过滤的帖子数组。然后对其进行迭代并手动将帖子分配到六个类别中的每个类别的数组中。
    • 这听起来很完美,但我不是 PHPer,所以我不知道该怎么做!
    【解决方案2】:

    试试这个代码:

    query_posts('tag=selected_tag');
    
    while (have_posts()) : the_post();
    
    
        foreach((get_the_category()) as $category)
            { 
    
            if ($category->cat_name == 'selected_category')
                {
                // output any needed post info, for example:
                echo the_title();
                }
    
            }
    
    
    endwhile;
    

    【讨论】:

    • 您已经用自己的值替换了“selected_tag”和“selected_category”,不是吗? 8) 将此代码放在wordpress模板中并为每个页面制作6个可能很有用。
    • 能否请您发布您的整个模板文本?我想某处可能有一个小错误。
    • 我将代码复制到我的一个主题中。我猜你的代码中的标签或类别有拼写错误。我也相信标签和类别是区分大小写的。
    • 斯科特,你对我有吸引力还是对劳拉有吸引力?在我的代码中,“selected_tag”是一个虚拟文本 - 只是为了展示方式;)
    【解决方案3】:

    对了,我终于找到了一个比较简单的解决办法。

    WordPress 中存在一个错误,阻止了对类别和标签的查询,因此 query_posts('cat=2&tag=bread'); 不起作用,但解决此问题的方法是 query_posts('cat=2&tag=bread+tag=bread');,它神奇地起作用。

    在 tag.php 模板中,我希望它从该存档中提取标签,所以我必须这样做:

    <?php query_posts('cat=12&tag='.$_GET['tag'].'+'.$_GET['tag']); ?>
    

    效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多