仅显示多维Meta_Value中的帖子

时间:2012-12-13 作者:Pontus Abrahamsson

因此,我想检索一个包含meta\\u键“\\u blocks”中帖子的列表,其中有一个多维数组,其中包含名为left、right、top等的“area”。在这些数组中,分配了post\\u id:s。如下所示:

Array
(
[left] => Array
(
[0] => 450
[1] => 452
[2] => 460
[3] => 451
[4] => 454
[5] => 449
[6] => 455
)

[right] => Array
(
[0] => 460
[1] => 455
[2] => 454
[3] => 453
)

)
查询现在如下所示。。我现在有点困惑如何存档这个。。

在此之前,我正在运行一个foreach,正如您在$区域上看到的$区域。和$type_areas 保持蚀刻柱类型:s。

$args = array(
    \'post_type\' => $type_areas[$area[\'area\']],
    \'posts_per_page\' => \'-1\',
    \'meta_key\' => \'_blocks\',
    \'meta_query\' => array(
      array(
        \'key\' => \'left\',
        \'value\' =>  \'450\', // just testing...
        \'compare\' => \'IN\',
      )
    )
);

$query = new WP_Query( $args );

while ( $query->have_posts() ) : $query->the_post();

   $output .= \'<li data-id="\'. $query->post->ID .\'" data-area="\'. $area[\'area\'] .\'"><p>\'. get_the_title() .\'</p><span>\'. $query->post->post_type .\'</span></li>\';

endwhile;

UPDATE

因此,我以一个简单的SQL查询结束了upp:

$sql = \'SELECT post_id FROM kwido_postmeta WHERE meta_value REGEXP \\\'"\'. $area[\'area\'] .\'";a:[[:digit:]]+:{[^}]*"\'. $mainpost->ID .\'"\\\'\';
$results = $wpdb->get_results( $sql, ARRAY_A );
它使用regex来查看当前的post\\u id和区域,如果找到,则获取post\\u id。。

$post_ids = array();

foreach ( $results as $result ) {
    $post_ids[] = $result[\'post_id\'];
}
使用post\\u id:s进行查询post__in 接受数组的参数。

$args = array(
    \'post_type\' => $type_areas[$area[\'area\']],
    \'posts_per_page\' => \'-1\',
    \'post__not_in\'   => $post_ids
);

$query = new WP_Query( $args );

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

Solved

因此,我以一个简单的SQL查询结束了upp:

$sql = \'SELECT post_id FROM kwido_postmeta WHERE meta_value REGEXP \\\'"\'. $area[\'area\'] .\'";a:[[:digit:]]+:{[^}]*"\'. $mainpost->ID .\'"\\\'\';
$results = $wpdb->get_results( $sql, ARRAY_A );
它使用regex来查看当前的post\\u id和区域,如果找到,则获取post\\u id。。

$post_ids = array();

foreach ( $results as $result ) {
    $post_ids[] = $result[\'post_id\'];
}
使用post\\u id:s进行查询post__in 接受数组的参数。

$args = array(
    \'post_type\' => $type_areas[$area[\'area\']],
    \'posts_per_page\' => \'-1\',
    \'post__not_in\'   => $post_ids
);

$query = new WP_Query( $args );

结束

相关推荐

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

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