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

时间:2017-08-16 14:59:20

标签: php html wordpress custom-fields

我正在尝试通过使用3个用户元值过滤来创建用户列表。

首先,我创建了一个包含两个选择选项的表单,这些选项具有元字段的不同可能值。然后我创建了一个过滤的查询并使用了表单中的值,第一个值($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
}

1 个答案:

答案 0 :(得分:0)

是否定义了查询变量?以下是我如何定义它们:

page_obj

如果你有一个注册的分类法,它会自动注册那个查询var,这在某些情况下不需要这个(我的主题中有一些我需要这个的情况,还有一些我没有的情况)