WordPress.org

Ready to get started?Download WordPress

Forums

Help with SQL to identify authors by specific role (3 posts)

  1. TrishaM
    Member
    Posted 4 years ago #

    I'm getting the following error message that I need some help troubleshooting:

    "Warning: array_keys() [function.array-keys]: The first argument should be an array in ..."

    Here is the code that is generating the error message (I put an arrow at the start of the line that is the problem):

    -------------------
    global $wpdb, $table_prefix; // set global WP vars needed for script

    $order = 'display_name'; // set order for users table query
    $user_ids = $wpdb->get_col("SELECT ID FROM $wpdb->users ORDER BY $order"); // query users

    foreach($user_ids as $user_id) : // start authors' profile "loop"

    $user = get_userdata($user_id); // retrieve author details

    $level = $table_prefix . 'user_level'; // set 'user_level' usermeta meta_key record

    $user->user_level = $user->$level; // assign 'user_level' property to $users

    $role = $table_prefix . 'capabilities'; // set 'role' usermeta table meta_key record

    (the following line is the one causing the error)
    => $user->role = array_keys($user->$role); // assign 'role' property to $user

    $user->role = $user->role[0]; // make sure $user->role is not an array
    --------------------

    This code generates a page that lets me list all the authors with a role of "contributor" and above, so I can display a photo, bio, and link to their posts, etc. The page renders fine except for the warning message at the top of the page, which I'd like to make go away.

    All other code & plugins I found prior to this just LIST authors, and don't let me use and format specific data from their metadata.

    The code is older, so my first thought is that it refers to WP tables or functions that no longer exist, but I looked at my tables in phpMyAdmin and the seem to be the same as referenced in the code.

    Any help would be much appreciated!

  2. Mark / t31os
    Moderator
    Posted 4 years ago #

    Change this line..

    $user->role = array_keys($user->$role);

    for..

    $user->role = ( is_array( $user->$role ) ) ? array_keys($user->$role) : array( $user->$role );

    No idea if that will help, but you can always undo the change if it doesn't..

  3. TrishaM
    Member
    Posted 4 years ago #

    Amazing - that fixed it!

    Thank you so much for your help, t3los_ !!

Topic Closed

This topic has been closed to new replies.

About this Topic

Tags

No tags yet.