PriMoThemes — now s2Member® (official notice)

This is now a very OLD forum system. It's in READ-ONLY mode.
All community interaction now occurs at WP Sharks™. See: new forums @ WP Sharks™

Access Custom Field Data

s2Member Plugin. A Membership plugin for WordPress®.

Access Custom Field Data

Postby ndavidson » November 8th, 2010, 12:45 am

To better help those searching the boards, I'm placing the usable code at the top of a new post, and will edit as it gets streamlined. The root post that shows the stages the code has gone through to get to this point is located at viewtopic.php?f=4&t=627 if you wish to follow along or add suggestions.

Ok, here's the controlled solution. What I didn't realize was that the data was entering MySQL serialized.

Code: Select all
$UserData = 3;//UserID;  to be set as a counter on a later loop edit

//create the query to the database
$query = "SELECT meta_value FROM wp_usermeta WHERE user_id='$UserData' && meta_key='wp_s2member_custom_fields'";

$results = $wpdb->get_col($query); //set the results to a usable variable
/*
## create an array to holdand unserialize the string,
## which places it into a key=>value pair with 'key' being
## the field name and 'value' being the value of the field
*/
$field_value_pairs = unserialize ($results[0]);

/*
# create a multidimensional array to connect all of
# the field=>value pairs to the user
*/
$Fields_By_User = array
(
$UserData => $field_value_pairs
);
/*
# To access the array you need to use the the keys of the
# user [$UserData] and the field names ['samplefield1']
# so if you had a field with the name 'city' you would get
# it's value buy typing $Fields_By_User[$UserData]['city'];
*/
echo $Fields_By_User[$UserData]['samplefield1'];


An un-commented example of how you would create a multidimensional array of users with field values would be: **Note, the loop is not tested and is for examples of use only.

Code: Select all
$user_query = $wpdb->get_col( $wpdb->prepare("SELECT $wpdb->users.ID FROM $wpdb->users " ));
$UserData = count($user_query);

   $Fields_By_User = array(
   
for($i=0;$i<$UserData;$i++)
{
   $query = "SELECT meta_value FROM wp_usermeta WHERE user_id='$i' && meta_key='wp_s2member_custom_fields'";
   $results = $wpdb->get_col($query);
   $field_value_pairs = unserialize ($results[0]);

      $i => $field_value_pairs
   
}  );


Not bad for 10 lines of code, eh? Anyone able to help me make it even better?
ndavidson
Guest User
Guest User
 

Return to s2Member Plugin

Who is online

Users browsing this forum: Google [Bot], Yahoo [Bot] and 3 guests

cron