我正在开发一个新项目,注册用户可以在wordpress Admin的“用户个人资料”页面中选择多个职业。我已经能够将不同职业的复选框添加到用户个人资料页面,注册用户可以查看/选择。
在前端,我为每个职业创建了一个页面。我想要一个场景,如果一个人应该去名为“程序员”的页面,那么将会显示所有在他们的个人资料中检查“程序员”的作者。作者信息,如头像,名称和所有帖子的链接将显示在循环中
我不知道如何去做。希望你们在这里可以提供帮助。
------------------------------- EDITED --------------- ------------
到目前为止,@ 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 :(得分: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' );
这是一般的。我还没有对它进行全面测试,因为我没有在编辑器中输入它。但这是复选框的完整解决方案,并使用数据通过元数据获取用户。如果这不起作用,那么你正在做一些你不会透露的事情。就像没有将职业生涯保存到用户元数据一样。