2017-04-26 43 views
0

我正在开发一个新项目,其中注册用户可以在wordpress Admin的用户配置文件页面中选择多个职位。我已经能够将不同职业的复选框添加到注册用户可以选中/查看的用户个人资料页面。基于选定的元数据在页面中显示作者

在前端,我为每个职业创建了一个页面。我想要一个scenerio,例如,如果一个人应该访问名为“Programmer”的页面,则会显示所有在其个人资料中检查“Programmer”的作者。作者信息像头像,名称和所有职位的链接将显示在一个循环中

我不知道该怎么去做。希望你们在这里能够提供帮助。

-------------------------------编辑-------------- -------------

与@AustinWinstanley提供的帮助迄今为止,这里是我的代码

$user_query = new WP_User_Query(array('meta_key' => 'career', 'meta_value' => 'programmer')); 

if (! empty($user_query->results)) { 
    foreach ($user_query->results as $user) { 
     echo '<p>' . $user->display_name . '</p>'; 
    } 
} else { 
    echo 'No users found.'; 
} 

有了上面的查询,任何作家的职业生涯字段的值是程序员被列出。如果Career的值字段是输入字段,则上述代码是合适的。我并不打算将职业价值作为输入领域,而是希望它成为作者可以检查多个值的复选框。

由于它不会是一个输入字段,而是复选框,我该如何编辑这一行来反映我想要的内容?

$user_query = new WP_User_Query(array('meta_key' => 'career', 'meta_value' => 'programmer')); 

回答

0

您可能想要query users by meta data。事情是这样的:

// Set this value by whatever you're searching for 
$career = 'programmer'; 

$args = array(
    'meta_query' => array(
     'relation' => 'AND', 
     array(
      array(
       'key'  => 'career', 
       'value' => $career, 
       'compare' => 'LIKE' 
       // Or 'compare' => '=' 
      ) 
     ) 
    ) 
); 
$user_query = new WP_User_Query($args); 

$result = $wp_user_query->get_results(); 

编辑:

前端的形式:

<form method='post'> 
    <input name="careers[]" type="checkbox" value="programmer"> Programmer 
    <input name="careers[]" type="checkbox" value="accountant"> Accountant 
    <input name="careers[]" type="checkbox" value="manager"> Manager 
    <button name="career-search">Search</button> 
</form> 

在你的插件或功能/包括:

function careers_postback($query) { 
    if($query->is_main_query() && isset($_POST['career-search'])) { 
     $careers = $_POST['careers'] 

     $meta_query = array(); 

     foreach($careers as $career) { 
      $meta_query[] = array(
       'relation' => 'AND', 
       array(
        array(
         'key'  => 'career', 
         'value' => $career, 
         'compare' => '=' 
        ) 
       ) 
      ); 
     } 

     $args = array(
      'meta_query' => $meta_query 
     ); 
     $user_query = new WP_User_Query($args); 

     $result = $wp_user_query->get_results(); 

     set_query_var('search-career-results', $result); 

     // Here you would include your search template and call exit 
     // In your template, use `get_query_var('search-career-results') 
     // Then check if there are results and list them if there are. 
    } 
} 
add_filter('pre_get_posts', 'careers_postback'); 

这是一般。我没有完全测试它,因为我没有在编辑器中输入它。但这是完整的解决方案,通过使用数据复选框并通过元数据获取用户。如果这一般不起作用,那么你正在做一些你没有透露的事情。就像不把职业生涯保存到用户元数据一样。

+0

我得到一个错误:'致命的错误:调用一个成员函数get_results()在一个非线对象........在第31行'我想要的是能够显示所有用户已经选择或核对“程序员”作为他们的职业。我想要循环显示它们。感谢您的时间 – Sam

+0

'职业生涯'不是一个标准选项。你得到的错误是因为没有结果。职业数据如何被保存?作为一个元键?值是一个数组吗?你将不得不改变你的用例的答案。没有足够的信息来确切知道元数据如何被保存,但这是一个如何使用元键和值搜索用户的例子。 –

+0

似乎你没有得到我的要点。我想显示在页面中输入或选择程序员的作者列表。例如,如果有两位作者选择“程序员”作为他们的职业,那么这两位作者应该显示在页面中。再次感谢您的时间 – Sam

相关问题