我不喜欢使用wp_Query

时间:2017-06-24 作者:Duck of Death

使用一个使用Job Manager的主题,列表按城市排列,我希望搜索“ondon”的人能够获得“London”中的所有列表。尝试了以下每种变体,但均无效:

$myArgs = array(
        \'orderby\'          => \'_post_date\',
        \'order\'            => \'ASC\',        
        \'post_type\'        => \'job_listing\',
        \'post_status\'      => \'publish\',
        \'posts_per_page\' => -1,
        \'meta_query\' => array(
                    array(
                          \'key\' => \'job_listing_region\',
                          \'value\' => "\'" . $city . "\'",
                          \'compare\' => \'LIKE\'
                          )
                    )
    );
    $cityschools = new WP_Query( $myArgs );
“job\\u listing\\u region”是CMS中的复选框。任何指导都会被告知。

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

设置meta\\u查询值时,如:

\'value\' => "\'" . $city . "\'",
它被转换为LIKE \'%\\\'ondon\\\'%\' 在最后的SQL查询中L\'ondon\'L\'ondon\'er 但不是London.

但实际上你希望它是这样的:LIKE \'%ondon%\' - 因此,您应该:

\'value\' => $city,

EDIT

抱歉,我没有注意到这实际上是与Job Manager插件相关的job_listing_region 是一种分类法。在这种情况下,您应该尝试执行以下操作:

// get taxonomy id\'s with names matching the query string $city
$foo_terms = get_terms( \'job_listing_region\', array(\'name__like\' => $city) );
$term_ids = [];
if ($foo_terms) {
    foreach ($foo_terms as $foo_term) {
        $term_ids[] = $foo_term->term_id;
    }
}

// get jobs_listing entries matching retrieved id\'s
$args = array(
            \'post_type\' => \'job_listing\',
            \'post_status\'      => \'publish\',
            \'posts_per_page\' => -1,
            \'tax_query\' => array(
                 array(
                     \'taxonomy\' => \'job_listing_region\',
                     \'field\'    => \'term_id\',
                     \'terms\' => $term_ids,
                     \'operator\' => \'IN\'
                 )
            )
);

结束

相关推荐

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

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