显示高级搜索表单的帖子

时间:2015-05-29 作者:Mark

我创建了一个包含多个字段的搜索表单,我想显示与搜索表单中插入的所有字段相匹配的帖子。

例如,如果我选择T恤&&;红色(&A)&;五十、 我把所有贴子的T恤作为meta\\u值T恤,所有贴子的红色作为meta\\u值,所有贴子的L作为meta\\u值。

代码如下:

<?php if ( ($_GET[\'product_color\'] == \'empty\') && ($_GET[\'product_size\'] == \'empty\') && ($_GET[\'product_type\'] == \'empty\') ) { ?>
   <h1 class="pagetitle">No Results!</h1> 
<?php } else {
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
// WP_Query arguments
$args = array (
    \'post_type\'                 => \'custom_products\',
    \'post_status\'               => \'published\',
    \'pagination\'                => true,
    \'posts_per_page\'        => 20,
    \'order\'                         => \'DESC\',
    \'orderby\'                   => \'parent\',
    \'paged\'                         => $paged,
    \'suppress_filters\'      => false,
    \'meta_query\'                => array(
        \'relation\'                  => \'OR\',
        array(
            \'key\'       => \'product_color\', 
            \'value\'     => $product_color,
            \'compare\'   => \'LIKE\'
        ),
         array(
             \'key\'       => \'product_size\',
             \'value\'     => $product_size,
             \'compare\'  => \'LIKE\'
        ),
        array(
            \'key\'       => \'product_type\',
            \'value\'     => $product_type,
            \'compare\'   => \'LIKE\'
        ),                          
    ),
);

// The Query
$searched_posts = new WP_Query( $args );
如何修改查询以实现目标?

提前感谢您!

1 个回复
SO网友:s_ha_dum

如果我没看错你的问题,你需要ANDOR 对于元查询relation

\'relation\'                  => \'AND\',
我看不出你把$product_* 值。您应该使用$_GET[\'product_color\'] (等),但您需要sanitize that user supplied data. 如果是我,我会使用“白名单”技术:

$whitelist = array(
  \'red\' => \'red\',
  \'blue\' => \'blue\'
);

if (isset($_GET[\'product_color\']) && isset($whitelist[$_GET[\'product_color\']])) {
  $product_color = $whitelist[$_GET[\'product_color\']];
}
echo $product_color;
如果这是一个辅助查询,您应该很好,如果这是您应该使用的页面上的主查询pre_get_posts.

结束

相关推荐

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

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