【问题标题】:Wordpress - get post based on meta field contentWordpress - 根据元字段内容获取帖子
【发布时间】:2012-06-17 03:52:24
【问题描述】:

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

  • 玩家具有相关的元字段:名字、姓氏和团队。
  • Teams 具有团队名称的相关元字段。

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

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    或者使用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);
    

    另一个使用meta_query 代替meta_keymeta_value 的等效查询:

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

    【讨论】:

    • 如果您设置'posts_per_page' => -1 将检索所有匹配的帖子,则不需要999999
    • 或设置nopaging => true
    • @vortexs 感谢“post_status”的建议!
    • @cfx 如果您知道帖子很少,您不必担心。例如:小型企业的团队成员。它永远不会返回数百个结果:P
    【解决方案2】:

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

    例如,假设您的自定义帖子类型仅称为“玩家”,并且每个“玩家”帖子都附加了一个名为“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" );
    

    【讨论】:

    • 由于这是团队页面内的辅助查询,建议使用WP_Queryget_posts 而不是query_posts - 请参阅the Codex
    • 更新答案以反映这一点
    • +1。不错的,谢谢顺便说一句(抱歉,我之前没有注意到这一点) - 可能值得添加一个 -1 的 posts_per_page 参数,以确保你让所有玩家回来(或者注意它,无论如何,所以提问者知道这种可能性) .
    • 谢谢!!这很有帮助。我试图用“get_posts”来做到这一点,但似乎无法正确设置参数。
    • 我的 CPT 也只是被称为“玩家”而不是“玩家”。您的解决方案完美运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多