自定义发布类型和自定义字段WP_QUERY

时间:2014-12-22 作者:Tom Oakley

我正在为一个青少年足球俱乐部的客户开发一个网站,根据孩子的能力和年龄,有许多不同的球队。我添加了一个名为Match Reports的自定义帖子类型,这样每个团队的经理都可以登录并撰写他们团队参与的最新比赛的帖子。

我还有一个新闻部分,使用WP的标准帖子部分。我已经写了一个短代码,可以在主页上显示新闻。我想做的是启用一个系统,通过选择一个选项,使用高级自定义字段插件(这是一个带有真/假值的两个选项单选按钮表单)将其中一个匹配报告添加到主页上?是/否。

在我的新闻快捷码中,我添加了Match Reports自定义帖子类型,效果很好,但我不知道如何仅显示选中“show on Homepage-Yes”单选按钮的报告。以下是我的查询参数:

$queryArgs = array(
    "post_type" => array( "post", "match-report" ),
    "meta_key" => "show_in_news",
    "meta_value" => "true"
);
问题是,由于标准帖子中没有自定义字段,因此只显示匹配报告,如果我删除自定义字段查询,它将显示所有匹配报告以及帖子。我需要它只显示匹配报告show_in_news (我的自定义字段带有单选按钮,使用高级自定义字段创建,值为true, 以及所有的帖子。

有人能帮我吗?如果是的话,非常感谢:)

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

当前您的元查询是独占的,您需要使其具有包容性。例如,您可以保存always 元字段show_in_news 对于match report custom post type,即使值为false. 然后,如果自定义,您可以包含帖子show_in_news 不存在(标准帖子),或者如果存在并且是"true" 对于自定义帖子类型:

$queryArgs = array(
    "post_type" => array( "post", "match-report" ),
    "meta_query" => array( 
        "relation" => "OR",
        array(
            "key" => "show_in_news",
            "compare" => "NOT EXISTS",
        ),
        array(
            "key"   => "show_in_news",
            "value" => "true",
        ),
    ),
);
这应该可以完成工作。

结束

相关推荐

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

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

自定义发布类型和自定义字段WP_QUERY - 小码农CODE - 行之有效找到问题解决它

自定义发布类型和自定义字段WP_QUERY

时间:2014-12-22 作者:Tom Oakley

我正在为一个青少年足球俱乐部的客户开发一个网站,根据孩子的能力和年龄,有许多不同的球队。我添加了一个名为Match Reports的自定义帖子类型,这样每个团队的经理都可以登录并撰写他们团队参与的最新比赛的帖子。

我还有一个新闻部分,使用WP的标准帖子部分。我已经写了一个短代码,可以在主页上显示新闻。我想做的是启用一个系统,通过选择一个选项,使用高级自定义字段插件(这是一个带有真/假值的两个选项单选按钮表单)将其中一个匹配报告添加到主页上?是/否。

在我的新闻快捷码中,我添加了Match Reports自定义帖子类型,效果很好,但我不知道如何仅显示选中“show on Homepage-Yes”单选按钮的报告。以下是我的查询参数:

$queryArgs = array(
    "post_type" => array( "post", "match-report" ),
    "meta_key" => "show_in_news",
    "meta_value" => "true"
);
问题是,由于标准帖子中没有自定义字段,因此只显示匹配报告,如果我删除自定义字段查询,它将显示所有匹配报告以及帖子。我需要它只显示匹配报告show_in_news (我的自定义字段带有单选按钮,使用高级自定义字段创建,值为true, 以及所有的帖子。

有人能帮我吗?如果是的话,非常感谢:)

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

当前您的元查询是独占的,您需要使其具有包容性。例如,您可以保存always 元字段show_in_news 对于match report custom post type,即使值为false. 然后,如果自定义,您可以包含帖子show_in_news 不存在(标准帖子),或者如果存在并且是"true" 对于自定义帖子类型:

$queryArgs = array(
    "post_type" => array( "post", "match-report" ),
    "meta_query" => array( 
        "relation" => "OR",
        array(
            "key" => "show_in_news",
            "compare" => "NOT EXISTS",
        ),
        array(
            "key"   => "show_in_news",
            "value" => "true",
        ),
    ),
);
这应该可以完成工作。

相关推荐

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

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