【问题标题】:Submit results for different rows提交不同行的结果
【发布时间】: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.";
    }

}

【问题讨论】:

  • 您的输入名称应该是数组。 &lt;input type="text" name="user_id[]" value="' . $user_id . '" readOnly="true"&gt;
  • Markus Müller 刚刚在下面给出了更详细的答案。 :)

标签: php wordpress foreach roles


【解决方案1】:

对输入名称使用数组语法。

input type="text" name="user_id[]" value="' . $user_id . '" readOnly="true">

<select name="userRole[]">

您的var_dump()calls 现在应该输出一个包含所有值的数组。然后使用 for 循环遍历您的数组并更新数组中包含的每个用户。

数组将包含所有用户。如果您只想处理角色更改的用户,则必须在 for 循环中检查旧角色,或者必须添加一些 javascript 代码以将某些行标记为已更新

【讨论】:

  • 感谢伙伴,它的工作。还有一个小问题,角色在后端发生了变化,但为了检查更新的结果,我必须刷新页面。我应该在代码中添加页面延迟或其他内容吗?
猜你喜欢
  • 1970-01-01
  • 2021-04-21
  • 2022-09-28
  • 1970-01-01
  • 1970-01-01
  • 2017-12-22
  • 1970-01-01
  • 2014-10-18
  • 1970-01-01
相关资源
最近更新 更多