【发布时间】:2015-04-27 14:39:07
【问题描述】:
我有一个问题,我需要你的建议。问题是我为一个 wordpress 网站创建了一个代码,其中管理员能够从一个页面而不是管理员仪表板更改用户的角色。现在我已经创建了代码,但我被困在一个地方,问题是在提交时,应该为每个更新了选定角色的用户更改数据。但目前它只处理 que 中的最后一个。 所以问题是没有为每个不同的用户更新角色,除了更新每个用户之外,代码只处理队列中的最后一个用户。
图片帮助
var_dump 结果...
代码:
function custom_get_users() {
require_once('wp-admin/includes/template.php');
require_once('wp-includes/registration.php');
if ( !function_exists('get_editable_roles') ) {
require_once( ABSPATH . '/wp-admin/includes/user.php' );
}
global $current_user;
global $wp_roles;
$user_roles = $current_user->roles;
$user_role = array_shift($user_roles);
if ( is_user_logged_in() && $user_role == 'administrator' ) {
$args = array(
'orderby' => 'ID',
'order' => 'ASC',
);
$blogusers = get_users( $args );
if ( isset( $_POST['submit'] ) ) {
$user_id = $_POST['user_id'];
$new_role = $_POST['userRole'];
var_dump($user_id);
var_dump($new_role);
// update user role using wordpress function
wp_update_user( array ('ID' => $user_id, 'role' => $new_role ) ) ;
}
echo "<form method='post' action='#'>";
echo "<table class='widefat'>";
echo "<thead>";
echo "<tr class='thead'>";
echo "<th>User ID</th>";
echo "<th>User Name</th>";
echo "<th>Role</th>";
echo "</tr>";
echo "</thead>";
// Array of WP_User objects.
foreach ( $blogusers as $user ) {
$user_id = $user->ID;
$user_role = $user->roles;
echo '<tr>';
echo '<td><input type="text" name="user_id" value="' . $user_id . '" readOnly="true"></td>';
echo '<td>' . esc_html( $user->display_name ) . '</td>';
echo '<td><select name="userRole">';
wp_dropdown_roles( $user_role[0] );
echo '</select></td>';
echo '</tr>';
}
echo '</table>';
echo '<input type="submit" name="submit" id="submit" class="button button-primary" value="Save">';
echo '</form>';
} else {
echo "Only Administrator can see this page.";
}
}
【问题讨论】:
-
您的输入名称应该是数组。
<input type="text" name="user_id[]" value="' . $user_id . '" readOnly="true"> -
Markus Müller 刚刚在下面给出了更详细的答案。 :)
标签: php wordpress foreach roles