尝试使用带参数的短代码显示符合特定条件的用户列表。这是我到目前为止所拥有的,但出于某种原因,它没有显示任何内容。我对这方面很陌生,所以如果有人有变化的例子,那将非常有帮助。提前谢谢。
/**
* Shortcode for Listing Users from Meta Data
* Usage: [list_users key="green-eyes" value="Yes" userrole="x-genes,y-genes"]
*/
function users_from_meta($atts) {
$atts = shortcode_atts( array(
\'key\' => \'\',
\'value\' => \'\',
\'userrole\' => \'\',
), $atts );
$user_query = new WP_User_Query( array(
\'meta_key\' => $atts[\'key\'],
\'meta_value\' => $atts[\'value\'],
\'role__in\' => wp_parse_list( $atts[\'userrole\'] ),
) );
$users = $user_query->get_results();
if (!empty($users)) {
$results = \'<ul>\';
foreach ($users as $user){
$results = \'<li>\' . $user->display_name . \'</li>\';
}
$results = \'</ul>\';
} else {
$results = \'No users found\';
}
wp_reset_postdata();
return $results;
}
add_shortcode( \'list_users\', \'users_from_meta\' );
最合适的回答,由SO网友:Sally CJ 整理而成
It\'s a small coding mistake..
它不显示任何内容,因为当有结果时,最终输出总是
</ul>
因为您总是覆盖
$results
并且不向变量追加输出:
$results = \'<ul>\';
foreach ($users as $user){
$results = \'<li>\' . $user->display_name . \'</li>\';
}
$results = \'</ul>\';
因此,正确的代码是:
$results = \'<ul>\';
foreach ($users as $user){
$results .= \'<li>\' . $user->display_name . \'</li>\';
}
$results .= \'</ul>\';
没有必要打电话
wp_reset_postdata()
因为在您的代码中,没有调用任何修改全局
$post
对象/数据。