带有 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的主要内容,如果未能解决你的问题,请参考以下文章