用于输出插件而不是ID的分类查询

时间:2012-04-10 作者:Andrew

所以我得到了一个自定义搜索表单,其中包含三个下拉列表,其中包含三种不同的自定义分类法。

问题是,我需要地址中的分类法段塞,以便搜索正常运行,因为现在我只获得ID。如果我的产品类别名称为50, 搜索时,它输出分类ID,即6 在地址中。

像这样:

/?s=&product_category=6&product_maksuaika=14&product_ikaraja=0

应在何时:

/?s=&product_category=50&product_maksuaika=14&product_ikaraja=0
我拥有的三种分类法也是如此。

以下是我的功能:

function my_dropdown($name, $taxonomy = \'category\') {
$defaults = array(
    \'taxonomy\' => $taxonomy,
    \'id\'       => $name,
    \'name\'     => $name,
    \'show_option_none\' => \' - Select - \',
    \'selected\' => get_query_var($name)
);

wp_dropdown_categories($defaults); 
 } 


add_action(\'pre_get_posts\', \'my_customsearch\'); 
function my_customsearch() {   
  global $wp_query;
  if ( !$wp_query->is_search ) {
    return false;
  }

  $tax_query = array();
  $operacion = get_query_var(\'product_category\');
  $ubicacion = get_query_var(\'product_maksuaika\');
  $precio    = get_query_var(\'product_ikaraja\');

  // first dropdown

  if (!empty($operacion) && $operacion > 0) {
    $tax_query[] = array(
        \'taxonomy\' => \'product_category\',
        \'field\'    => \'id\',
        \'terms\'    => $operacion
     );
  }

  // second dropdown

  if (!empty($ubicacion) && $ubicacion > 0) {
    $tax_query[] = array(
        \'taxonomy\' => \'product_maksuaika\',
        \'field\'    => \'id\',
        \'terms\'    => $ubicacion
    );
  }

  // third dropdown

  if (!empty($precio) && $precio > 0) {
      $tax_query[] = array(
        \'taxonomy\' => \'product_maksuaika\',
        \'field\'    => \'id\',
        \'terms\'    => $ubicacion
      );

  if ( sizeof($tax_query) > 0 ) {
      $tax_query[\'relation\'] = \'AND\';
      $wp_query->query_vars[\'tax_query\'] = $tax_query;
  }

return false; 
} 

// add my custom query vars 
add_filter(\'query_vars\', \'mycustom_query_vars\'); 

function mycustom_query_vars($query_vars) {
  $query_vars[] = \'operacion\';
  $query_vars[] = \'ubicacion\';
  $query_vars[] = \'precio\';

  return $query_vars; 
 }
简单地将字段更改为数组中的段塞或名称并不能起到作用。

有什么想法吗?

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

没有什么是“错误的”,尽管您确实有一些错误:

第三个tax\\u查询条件缺少结束括号precio$ubicacion.

  • 将ID变量转换为整数,我建议将WordPress置于调试模式以突出显示任何语法错误。首先尝试只对一种分类法执行此操作,然后将其他分类法添加到中。如果使用WP3。3+我还建议进行以下设置:

    add_action(\'pre_get_posts\', \'my_customsearch\'); 
    function my_customsearch($query) {   
    
        if(! $query->is_main_query() || ! $query->is_search )
           return;
    
        $tax_query = array();
        $operacion = (int) get_query_var(\'product_category\');
    
        // first dropdown
        if (! empty($operacion) && $operacion > 0) {
           $tax_query[] = array(
             \'taxonomy\' => \'product_category\',
             \'field\'    => \'id\',
             \'terms\'    => $operacion
           );
        }
    
       if ( sizeof($tax_query) > 0 ) {
          $tax_query[\'relation\'] = \'AND\';
          $query->set( \'tax_query\', $tax_query );
       }
    
    }
    
    请记住,这将替换作为主搜索一部分的任何税务查询。

  • 结束

    相关推荐

    用于输出插件而不是ID的分类查询 - 小码农CODE - 行之有效找到问题解决它

    用于输出插件而不是ID的分类查询

    时间:2012-04-10 作者:Andrew

    所以我得到了一个自定义搜索表单,其中包含三个下拉列表,其中包含三种不同的自定义分类法。

    问题是,我需要地址中的分类法段塞,以便搜索正常运行,因为现在我只获得ID。如果我的产品类别名称为50, 搜索时,它输出分类ID,即6 在地址中。

    像这样:

    /?s=&product_category=6&product_maksuaika=14&product_ikaraja=0

    应在何时:

    /?s=&product_category=50&product_maksuaika=14&product_ikaraja=0
    
    我拥有的三种分类法也是如此。

    以下是我的功能:

    function my_dropdown($name, $taxonomy = \'category\') {
    $defaults = array(
        \'taxonomy\' => $taxonomy,
        \'id\'       => $name,
        \'name\'     => $name,
        \'show_option_none\' => \' - Select - \',
        \'selected\' => get_query_var($name)
    );
    
    wp_dropdown_categories($defaults); 
     } 
    
    
    add_action(\'pre_get_posts\', \'my_customsearch\'); 
    function my_customsearch() {   
      global $wp_query;
      if ( !$wp_query->is_search ) {
        return false;
      }
    
      $tax_query = array();
      $operacion = get_query_var(\'product_category\');
      $ubicacion = get_query_var(\'product_maksuaika\');
      $precio    = get_query_var(\'product_ikaraja\');
    
      // first dropdown
    
      if (!empty($operacion) && $operacion > 0) {
        $tax_query[] = array(
            \'taxonomy\' => \'product_category\',
            \'field\'    => \'id\',
            \'terms\'    => $operacion
         );
      }
    
      // second dropdown
    
      if (!empty($ubicacion) && $ubicacion > 0) {
        $tax_query[] = array(
            \'taxonomy\' => \'product_maksuaika\',
            \'field\'    => \'id\',
            \'terms\'    => $ubicacion
        );
      }
    
      // third dropdown
    
      if (!empty($precio) && $precio > 0) {
          $tax_query[] = array(
            \'taxonomy\' => \'product_maksuaika\',
            \'field\'    => \'id\',
            \'terms\'    => $ubicacion
          );
    
      if ( sizeof($tax_query) > 0 ) {
          $tax_query[\'relation\'] = \'AND\';
          $wp_query->query_vars[\'tax_query\'] = $tax_query;
      }
    
    return false; 
    } 
    
    // add my custom query vars 
    add_filter(\'query_vars\', \'mycustom_query_vars\'); 
    
    function mycustom_query_vars($query_vars) {
      $query_vars[] = \'operacion\';
      $query_vars[] = \'ubicacion\';
      $query_vars[] = \'precio\';
    
      return $query_vars; 
     }
    
    简单地将字段更改为数组中的段塞或名称并不能起到作用。

    有什么想法吗?

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

    没有什么是“错误的”,尽管您确实有一些错误:

    第三个tax\\u查询条件缺少结束括号precio$ubicacion.

  • 将ID变量转换为整数,我建议将WordPress置于调试模式以突出显示任何语法错误。首先尝试只对一种分类法执行此操作,然后将其他分类法添加到中。如果使用WP3。3+我还建议进行以下设置:

    add_action(\'pre_get_posts\', \'my_customsearch\'); 
    function my_customsearch($query) {   
    
        if(! $query->is_main_query() || ! $query->is_search )
           return;
    
        $tax_query = array();
        $operacion = (int) get_query_var(\'product_category\');
    
        // first dropdown
        if (! empty($operacion) && $operacion > 0) {
           $tax_query[] = array(
             \'taxonomy\' => \'product_category\',
             \'field\'    => \'id\',
             \'terms\'    => $operacion
           );
        }
    
       if ( sizeof($tax_query) > 0 ) {
          $tax_query[\'relation\'] = \'AND\';
          $query->set( \'tax_query\', $tax_query );
       }
    
    }
    
    请记住,这将替换作为主搜索一部分的任何税务查询。

  • 相关推荐