带有 ID 和 slug 组合的 Wordpress query_posts

Posted

技术标签:

【中文标题】带有 ID 和 slug 组合的 Wordpress query_posts【英文标题】:Wordpress query_posts with ID and slug combination 【发布时间】:2014-09-20 18:58:41 【问题描述】:

是否可以将 query_posts 与 id 和 slug 结合使用?

我有一组来自用户输入的 id 和 slug,我想知道我是否可以在同一个帖子查询中使用这两者,还是我必须先将 slug 转换为它们各自的帖子 ID,然后再使用 posts__in?

我在一个数组中有以下 slug 和 ID 的混合物……

$values = array('this-is-a-test-slug', '2345', '4510', 'another-slug-here', '8934');

如何在 query_posts 中使用它?我可以吗?

query_posts(array('post_type' => 'post', 'post__in' => $values, 'orderby' => 'rand'));

我知道 post__in 可以使用数字 ID,但我不认为 slugs 在这里工作,因为它需要一个数字数组。

谢谢

【问题讨论】:

没有代码很难准确理解你的意思。话虽这么说,也许 if(is_numeric($key))// 它是一个 ID else //它可能是一个蛞蝓 嗨@dwhite.me - 我没有发布任何代码,因为我认为这是一个一般性问题,但会修改原始帖子以提供帮助。谢谢 【参考方案1】:

如果您正在做这样的事情,我不明白为什么将它们全部转换为 ID 不会有问题? There's a thread that sort of helps,我已经编写了一些代码(在该链接的帮助下)可以帮助您入门

function allToID($array)
  $id = array(); 

  foreach($array as $convert):
      if(is_numeric($convert)):
          continue; // skip if it's already an ID
      else:

        $the_slug = $convert;
        $args=array(
          'name' => $the_slug,
          'numberposts' => 1
        );

        // Ask wordpress to get this post
        $my_posts = get_posts($args);

        if( $my_posts ) : 
            // push onto our new array of only IDs
            array_push($id, $my_posts[0]->ID);
        else continue; 
        endif;
    endif;
  endforeach;

理想情况下,您将能够运行post__in => alltoID($values)

希望这会有所帮助!

【讨论】:

以上是关于带有 ID 和 slug 组合的 Wordpress query_posts的主要内容,如果未能解决你的问题,请参考以下文章

ReactJS- 在带有 React 路由器的 URL 中使用 slug 而不是 Id

使用 slug 而不是 ID 获取记录

在 URL 中显示类别 Slug 而不是 ID

如何将 id 添加到 Friendly_id slug?

使用动态确定的 slug 将路由反应到页面 [重复]

在 url 中组合多个 slug