这种使用posts_where()函数的方法并不清楚

时间:2016-10-07 15:26:27

标签: wordpress

我有这个非常短暂的功能,我根本不懂,评论很可笑:

// This function makes the meta query work
function my_posts_where( $where ) {
    $where = str_replace("meta_key = 'bonuses_%", "meta_key LIKE 'bonuses_%", $where);
    return $where;
}
add_filter('posts_where', 'my_posts_where');

有问题的元查询是一个标准的WP查询,array_push($args['meta_query'],$bonusesArgs);将$ bonusesArgs(元查询)推入其中。

如果没有my_posts_where函数,元查询就无法运行。我不明白为什么(显然开发人员也没有......!)

我希望有人可以解释my_posts_where功能 - 它在做什么,我已经看了一遍,无法理解它。

1 个答案:

答案 0 :(得分:1)

嗯..它似乎正在做的是重建不同的元查询,但是使用LIKE而不是direct =

Like执行搜索字符串中的值,而不是直接相等。

因此,如果原始元查询仅使用<section class="bg-img well-top"> <img src="https://placebear.com/1200/300" alt="place bear" /> <div class="container"> <div class="row"> <div class="col-xs-12 col-sm-offset-2 col-sm-8"> <form class="search-form" action="http://static.livedemo00.template-help.com/wt_57621/search.php" method="GET" accept-charset="utf-8"> <label class="search-form_label"> <input class="search-form_input" type="text" name="s" autocomplete="off" placeholder="Search Scripts"/> <span class="search-form_liveout"></span> </label> <button class="search-form_submit fa-search" type="submit"></button> </form> </div> </div> </div> </section>值,则此函数似乎完全是多余的。

但是,如果没有看到整个代码,那么确切地说出这可能产生的影响真的很难。但无论如何,有更好的方法与查询对象进行交互,而不是在其数据上运行一些奇怪的str_replace。