(如何)我可以在数组参数的左侧使用通配符?

时间:2015-06-08 作者:Kevin4fm

我花了一整天的时间试图找出如何做到这一点,但只取得了一点进步——这主要是在寻找不起作用的方法。我希望有人知道一些事情或能看到一些我错过的事情!

我有两种自定义的帖子类型:插曲和片段插曲本身保存一些信息,但显示器也会使用片段自行构建。我通过这一集和所有同名片段来实现这一点。因此,当我查看一集时,过程的一部分是查看所有片段,并显示标题相同的片段。每个关联的片段都有与该集相同的slug,还有一个唯一的识别后缀,例如“-1”、“2”、“3”等。

我现在需要查询数据库,以确定某一集是否有特定类型的片段与之关联。如果“page\\u title”在$args中是一个有效的条目,那么这应该很容易,但似乎不是。(我花了今天相当大的时间才意识到!)

片段的前六个字符与片段的前六个字符相同。但这是否意味着我需要在$arg行的左侧使用通配符?换句话说,“slug的前六个字符=>\\u slug”。

有人能建议我如何做到这一点吗?

(我认为这不会特别有帮助,但你可以看到两种职位类型如何协同工作的示例here.)

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

我同意对这个问题的评论,即可能有更好的方法来关联你的帖子类型,然而,这个问题以一种“代码高尔夫”的方式很有趣:)

我现在需要查询数据库,以确定某一集是否有特定类型的片段与之关联。如果“page\\u title”在$args中是一个有效的条目,那么这应该很容易,但似乎不是。(我花了今天相当长的时间才意识到!)

name and pagename 两者都解决了slug 但不能使用通配符,如果您尝试以下操作,可以看到:

$args = array(
  \'post_type\' => \'book\',
  \'name\' => \'test\',
);
$q = new WP_Query($args);
var_dump($q->request);
实现通配符技巧的最简单方法是启用过滤器posts_where:

function wildcard_post_slug($where) {
  remove_filter(\'posts_where\',\'wildcard_post_slug\');
  global $wpdb;
  return $where.\' AND \'.$wpdb->posts.\'.post_name LIKE "Episode_%"\';
}
add_filter(\'posts_where\',\'wildcard_post_slug\');
$args = array(
  \'post_type\' => \'book\',
);
$q = new WP_Query($args);
var_dump($q->request);

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post