【问题标题】:Wordpress: Get related posts by category, but ignore primary categoryWordpress:按类别获取相关帖子,但忽略主要类别
【发布时间】:2017-10-27 16:25:31
【问题描述】:

我正在尝试设置相关帖子,以显示与当前相同类别的帖子。客户博客的设置方式是他们都共享“博客”类别,相关帖子将为每个帖子显示相同的内容。

<?php $related = get_posts( array( 
                'category__in' => wp_get_post_categories($post->ID), 
                'numberposts' => 4, 
                'post__not_in' => array($post->ID)
                ) );

            ?> 

我需要获取非主要类别(博客)的帖子。我不能做“cateogry__not__in”,因为那样它会排除一切。

【问题讨论】:

  • 过滤wp_get_post_categories($post-&gt;ID) 不包括博客类别怎么样?
  • 你能帮我解决这个问题吗?我仍然需要确保它没有隐藏带有类别博客的帖子,因为它们都具有该类别。
  • 'category__in' =&gt; array_diff( wp_get_post_categories($post-&gt;ID), array(5) ),....(其中 5 是博客类别的 ID....)
  • 谢谢,cale,但它仍然为每个 single.php 帖子返回相同的帖子集
  • 好吧,听起来您的帖子都属于这些类别,是吗?除非您进行故障排除 - 共享类别 ID - 当前帖子的类别 ID 等,否则这是无法猜测的。

标签: wordpress categories


【解决方案1】:

根据wp_term_query's docs,您应该可以通过添加参数来排除博客,例如将您的 category__in 更改为

'category__in' => wp_get_post_categories(
    $post->ID,
    array(
        "exclude" => array($blogid)
    )
),

$blogid 是您博客类别的术语 ID。由于它还提供了exclude_tree 来排除术语及其子术语,因此我认为它会完全按照您想要的方式完成并且只排除博客类别。

【讨论】:

  • 不幸的是,我似乎仍然在每个帖子(single.php)上收到相同的 4 个帖子。它不排除博客并寻找其他类别。感谢您的帮助。
  • wp_get_post_categories 调用返回什么?您是否将 $blogid 替换为您的博客类别的 ID?
【解决方案2】:

好吧,我想我找到了办法。一切似乎都按照我想要的方式运行。

 $categories = get_the_category();
 $category_filter = array();

   foreach ($categories as $category) {
     if ($category->name != "Blog") {
        array_push($category_filter, $category->term_id);
     }
  }



    <?php $related = get_posts( array( 
         'category__in' => $category_filter,
          'numberposts' => 4, 
           'post__not_in' => array($post->ID),
            'orderby' => 'rand'
       ) );

     ?> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多