获取具有多项选择的元字段选中多个值的所有帖子

时间:2015-04-21 作者:folibis

我很抱歉事先有任何混淆,我只有2天与WP。

所以,我使用Advanced Custom Fields 向partucular类型的帖子添加可格式化的自定义字段。其中一个字段是带有名称的多项选择的复选框spec.现在我想得到所有的帖子spec 已选中一个或多个值。

例如:此字段的选项是{“choice1”、“choice2”、“choice3”、“choice4”、“choice5”},在一些帖子中,我选择了“choice2”和“choice3”并保存了这些帖子。

如果我打印spec 在回路中

print_r( get_post_meta($post->ID,\'spec\',true));
它可能看起来像:

Array
(
    [0] => choice2
    [1] => choice3
)
现在我想获得所有选择了“choice2”或“choice3”的帖子(或者可能只有choice2 或仅限choice3):

query_posts(
    array(
        \'cat\' => 6,
        \'posts_per_page\'=>-1,
        \'meta_query\' => array(
            array(
                \'key\' => \'spec\'
                \'value\' => array(\'choice2\',\'choice3\'),
                \'compare\' => \'IN\'
            )
        )
    )
);
但这行不通。据我所知,实际情况是WHERE spec IN \'choice2\', 其中选择是数组。但我需要相反的条件in_array(\'choice2\',spec) || in_array(\'choice3\',spec). 可能有一些HAS 的值compare?

那么我的问题是,我如何才能得到所有的帖子,其中带有多项选择的元字段有几个值被检查?

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

您是否尝试过这样打电话:

$args = array(
  \'post_type\'  => \'product\',
  \'meta_query\' => array(
    \'relation\' => \'OR\',
    array(
        \'key\'     => \'spec\',
        \'value\'   => \'choice2\',
        \'compare\' => \'LIKE\',
    ),
    array(
        \'key\'     => \'spec\',
        \'value\'   => \'choice3\',
        \'compare\' => \'LIKE\',
    ),
  ),
);
$query = new WP_Query( $args );
示例取自straighcodex

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在

获取具有多项选择的元字段选中多个值的所有帖子 - 小码农CODE - 行之有效找到问题解决它

获取具有多项选择的元字段选中多个值的所有帖子

时间:2015-04-21 作者:folibis

我很抱歉事先有任何混淆,我只有2天与WP。

所以,我使用Advanced Custom Fields 向partucular类型的帖子添加可格式化的自定义字段。其中一个字段是带有名称的多项选择的复选框spec.现在我想得到所有的帖子spec 已选中一个或多个值。

例如:此字段的选项是{“choice1”、“choice2”、“choice3”、“choice4”、“choice5”},在一些帖子中,我选择了“choice2”和“choice3”并保存了这些帖子。

如果我打印spec 在回路中

print_r( get_post_meta($post->ID,\'spec\',true));
它可能看起来像:

Array
(
    [0] => choice2
    [1] => choice3
)
现在我想获得所有选择了“choice2”或“choice3”的帖子(或者可能只有choice2 或仅限choice3):

query_posts(
    array(
        \'cat\' => 6,
        \'posts_per_page\'=>-1,
        \'meta_query\' => array(
            array(
                \'key\' => \'spec\'
                \'value\' => array(\'choice2\',\'choice3\'),
                \'compare\' => \'IN\'
            )
        )
    )
);
但这行不通。据我所知,实际情况是WHERE spec IN \'choice2\', 其中选择是数组。但我需要相反的条件in_array(\'choice2\',spec) || in_array(\'choice3\',spec). 可能有一些HAS 的值compare?

那么我的问题是,我如何才能得到所有的帖子,其中带有多项选择的元字段有几个值被检查?

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

您是否尝试过这样打电话:

$args = array(
  \'post_type\'  => \'product\',
  \'meta_query\' => array(
    \'relation\' => \'OR\',
    array(
        \'key\'     => \'spec\',
        \'value\'   => \'choice2\',
        \'compare\' => \'LIKE\',
    ),
    array(
        \'key\'     => \'spec\',
        \'value\'   => \'choice3\',
        \'compare\' => \'LIKE\',
    ),
  ),
);
$query = new WP_Query( $args );
示例取自straighcodex

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在