2017-04-26 53 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

相關問題