通过使用Wordpress中的查询使用两个自定义元字段列出用户

通过使用Wordpress中的查询使用两个自定义元字段列出用户

问题描述:

我试图通过用3个用户元值进行过滤来创建用户列表。通过使用Wordpress中的查询使用两个自定义元字段列出用户

首先,我创建了一个具有两个选择选项的表单,这两个选项对于元字段具有不同的可能值。然后,我创建了一个过滤的查询并使用表单中的值,第一个值($search)完美地工作,但第二个不起作用,我不知道为什么。

如果我在

'key' => 'distrito_profissao' 

替代第二个值将很好地工作。

'value' => 'Leiria' 

我也弄不明白,为什么这个值($search2)当我提交它,另一个则没有保持保存。

add_shortcode('user_search_C','My_User_search_C'); 

function My_User_search_C() { 

?> 
<?php 
$search=get_query_var('as'); 
$search2=get_query_var('bs'); 


// Array of stdClass objects. 
?> 

<ul class="users_list"> 

<form>  
    <label for="as" ></label> 
    <select name="as" id="as" > 
      <option value="" <?php selected($search, ""); ?> ></option> 
      <option value="CAPDA"<?php selected($search, "CAPDA"); ?> >Crianças e adolescentes com perturbações do desenvolvimento e aprendizagem</option> 
      <option value="CMPIP"<?php selected($search, "CMPIP"); ?> >Crianças em meio pré-escolar e/ou Intervenção Precoce</option> 
      <option value="CACP"<?php selected($search, "CACP"); ?> >Crianças e adolescentes em contexto pedopsiquiátrico</option> 
      <option value="MA" <?php selected($search, "MA"); ?> >Meio Aquático</option> 
      <option value="SMAI"<?php selected($search, "SMAI"); ?> >Saúde mental do adulto e do idoso</option> 
     </select><br/> 



     <label for="bs"></label> 
     <select name="bs" id="bs" > 
      <option value="" <?php selected($search2, ""); ?>></option> 
      <option value="Beja" <?php selected($search2, "Beja"); ?> >Beja</option> 
      <option value="Braga" <?php selected($search2, "Braga"); ?> >Braga</option> 
      <option value="Bragança" <?php selected($search2, "Bragança"); ?> >Bragança</option> 
      <option value="Castelo Branco" <?php selected($search2, "Castelo Branco"); ?> >Castelo Branco</option> 
      <option value="Coimbra" <?php selected($search2, "Coimbra"); ?> >Coimbra</option> 
      <option value="Évora" <?php selected($search2, "Évora"); ?> >Évora</option> 
      <option value="Guarda" <?php selected($search2, "Guarda"); ?> >Guarda</option> 
      <option value="Leiria" <?php selected($search2, "Leiria"); ?> >Leiria</option> 
      <option value="Lisboa" <?php selected($search2, "Lisboa"); ?> >Lisboa</option> 
      <option value="Portalegre" <?php selected($search2, "Portalegre"); ?> >Portalegre</option> 
      <option value="Porto" <?php selected($search2, "Porto"); ?> >Porto</option> 
      <option value="Santarém" <?php selected($search2, "Santarém"); ?> >Santarém</option> 
      <option value="Setúbal" <?php selected($search2, "Setúbal"); ?> >Setúbal</option> 
      <option value="Viana do Castelo" <?php selected($search2, "Viana do Castelo"); ?> >Viana do Castelo</option> 
      <option value="Vila Real" <?php selected($search2, "Vila Real"); ?> >Vila Real</option> 
      <option value="Viseu" <?php selected($search2, "Viseu"); ?> >Viseu</option> 
     </select></br> 

     <input type="submit" id="submit" /> 


    </form> 

    <?php 

$blogusers = get_users(array('fields' => array('display_name'),array('meta_key' => $metakey,$metakey2),array('meta_value' => $search2,$search),'meta_query' => array(
    'relation' => 'AND', 
    array(
     'key' => 'list_prof', 
     'value' => 'S', 
     'compare' => '=' 
    ), 
    array('relation' => 'OR', 
    array(
     'key' => 'distrito_profissao', 
     'value' => $search2, 
     'compare' => '=' 
    ), 
    array(
     'key' => 'area_profissao', 
     'value' => $search, 
     'compare' => '=' 
    ) 


)))); 
foreach ($blogusers as $user) { 

echo '<li>' . esc_html($user->display_name) . '</li>'; 
} 
?> 
</ul> 

<?php 
} 

这两个查询变量是否定义?下面是我如何定义他们:

function e3_add_query_vars($vars) { 
    $vars[] = 'as'; 
    $vars[] = 'bs'; 
    return $vars; 
} 
add_filter('query_vars', 'e3_add_query_vars'); 

如果您已注册的分类,它会自动记录查询VAR使得这种不必要在某些情况下(我在我的主题,我需要这个,有些地方我不”某些情况下, t)

+0

我刚刚做了,但结果是一样的,它仍然不保存第二个变量 –

+0

您是否尝试回显两个变量以确保$ search2为空? – Stevish

+0

这正是$ serch2总是空的地方,我不知道为什么,因为代码和$ search完全一样!并且$ search给出了适当的回声。 –