Wordpress - 根据元字段内容获取帖子

dre*_*mme 26 php wordpress wordpress-plugin

我正在开发一个wordpress插件.我正在使用两种不同的自定义帖子类型,玩家团队.

  • 玩家有相关的元字段:名字,姓氏和团队.
  • 团队拥有团队名称的相关元区域.

在编辑特定的团队帖子时,我正在尝试将当前将该团队名称发布到其团队名称的元字段的所有玩家的数组.我不知道该怎么做.任何帮助或文章都会非常有用.谢谢

col*_*lin 56

或使用get_posts:

$args = array(
    'meta_key' => 'player_team',
    'meta_value' => $teamname,
    'post_type' => 'player',
    'post_status' => 'any',
    'posts_per_page' => -1
);
$posts = get_posts($args);
Run Code Online (Sandbox Code Playgroud)

使用meta_query而不是meta_key和的另一个等效查询meta_value:

$args = array(
    'meta_query' => array(
        array(
            'key' => 'player_team',
            'value' => $teamname
        )
    ),
    'post_type' => 'player',
    'posts_per_page' => -1
);
$posts = get_posts($args);
Run Code Online (Sandbox Code Playgroud)

  • 如果设置`'posts_per_page'=> -1`将检索所有匹配的帖子,则不需要`999999`. (7认同)
  • 或者设置`nopaging => true`. (7认同)

jn_*_*pdx 24

重要的是,您至少使用帖子类型,元键和元值的三个条件来查询帖子.

例如,让我们假设您的自定义帖子类型被称为"播放器"而且,每个"播放器"帖子都附加了一个名为"player_team"的元字段

然后,您可以使用以下内容查询这些帖子:

$teamname = ""; // the player's team that you're querying for

$myquery = new WP_Query( "post_type=player&meta_key=player_team&meta_value=$teamname&order=ASC" );
Run Code Online (Sandbox Code Playgroud)

  • 更新了答案以反映这一点 (3认同)
  • 由于这是团队页面内的二级查询,建议使用`WP_Query`或`get_posts`而不是`query_posts` - 参见[Codex](http://codex.wordpress.org/Template_Tags/query_posts#Secondary_Loops) (2认同)