【问题标题】:Wordpress query for Custom Field number BETWEEN two query variables两个查询变量之间的自定义字段编号的 Wordpress 查询
【发布时间】:2017-05-23 19:48:51
【问题描述】:

我正在尝试列出名为“jobs”的查询自定义帖子类型的存档,每个帖子类型都有一个自定义字段“minimum_salary”和“maximum_salary”。

在上一个搜索页面上,用户在搜索中输入两个值('min-salary' 和 'max-salary'),它们将添加到存档页面的 URL。

我希望能够显示在用户在上一页输入的最低和最高薪水变量之间具有“最低薪水”和“最高薪水”的所有工作。

到目前为止,请参阅下面的代码,感谢您的帮助。

<?php

$minSalaryVar = get_query_var('min-salary');
$maxSalaryVar = get_query_var('max-salary');

$taxArgs = array();


if ($minSalaryVar && $maxSalaryVar) {
  $taxArgs[] = array(
    'meta_query' => array(
      'relation' => 'AND',
      array(
        'key' => 'minimum_salary',
        'value' => array($minSalaryVar, $maxSalaryVar),
        'compare' => 'BETWEEN',
        'type' => 'numeric'
      ),
      array(
        'key' => 'maximum_salary',
        'value' => array($minSalaryVar, $maxSalaryVar),
        'compare' => 'BETWEEN',
        'type' => 'numeric'
      ),
    )
  );
}




   if ($taxArgs) {
  $args = array (
  'tax_query' => $taxArgs,
  );

  $argsNew = array_merge( $wp_query->query_vars, $args );
  query_posts( $argsNew );
} ?>

【问题讨论】:

  • 尝试改成array( 'key' =&gt; 'minimum_salary', 'value' =&gt; $minSalaryVar, 'compare' =&gt; '&gt;=', 'type' =&gt; 'numeric' ), array( 'key' =&gt; 'maximum_salary', 'value' =&gt; $maxSalaryVar, 'compare' =&gt; '&lt;=', 'type' =&gt; 'numeric' ),
  • 感谢您的回复,这似乎也不起作用。它只列出每个职位,无论指定的最低和最高工资是多少
  • 您使用什么作为最低和最高工资的输入?
  • 我正在使用 JQuery Slider 输入最低和最高工资,它会像这样添加到 URL 中:/?s=&min-salary=28000&max-salary=70000

标签: php wordpress


【解决方案1】:

当您需要使用 'compare' = 'BETWEEN' 两次时,要么只使用一次,要么比较两次,一个高于最低工资,另一个更大。接下来我会让这两个选项:

1:

if ($minSalaryVar && $maxSalaryVar) {
    $meta_query = array(
      'relation' => 'AND',
      array(
        'key' => 'minimum_salary',
        'value' => $minSalaryVar, 
        'compare' => '>=',
        'type' => 'numeric'
      ),
      array(
        'key' => 'maximum_salary',
        'value' => $maxSalaryVar,
        'compare' => '<=',
        'type' => 'numeric'
      ),
  );
}




   if ($taxArgs) {
  $args = array (
  'meta_query' => $meta_query,
  );

  $argsNew = array_merge( $wp_query->query_vars, $args );
  query_posts( $argsNew );
} ?>

2:

$taxArgs = array();


if ($minSalaryVar && $maxSalaryVar) {
  $meta_query = array(
        'key' => 'minimum_salary',
        'value' => array($minSalaryVar,$maxSalaryVar),
        'compare' => 'BETWEEN
        'type' => 'numeric'
  );
}




   if ($taxArgs) {
  $args = array (
  'meta_query' => $meta_query,
  );

  $argsNew = array_merge( $wp_query->query_vars, $args );
  query_posts( $argsNew );
} ?>

--- 编辑

您应该使用“meta_query”而不是“tax_query”

【讨论】:

  • 不幸的是,这些建议都不起作用,但你可以有很多东西要测试,就像版本 4.1 一样
  • 这可能是因为当您想在 $args 中使用 'meta_query' 时使用的是 'tax_query'
  • 顺便说一句,这不是版本的东西。只是您没有为所需的 sql 语句指定正确的逻辑界限。
猜你喜欢
  • 2019-11-14
  • 2014-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-04
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多