Reputation: 4266
I am trying to display the line_managers
's nickname
of a given user_id
from my WP usermeta table.
The table looks like this:
user_id
2
has the line_manager
value 1
'user_id' 1
has the nickname
value MyNicknameString
Desired Result
User ID: 2
Line Manager ID: 1
Line Manager Nickname: MyNicknameString
PHP
User ID:
<?php echo bp_displayed_user_id(); ?>
<br>
Line Manager ID:
<?php
$line_manager = get_user_meta( bp_displayed_user_id() , 'line_manager' , true );
echo $line_manager;
?>
<br>
Line Manager Nickname:
<?php
$line_manager = get_user_meta( bp_displayed_user_id() , 'line_manager' , true );
$line_manager_nickname = get_user_meta( $line_manager , 'nickname' , true );
echo $line_manager_nickname;
?>
Current Result
User ID: 2
Line Manager ID: Array
Line Manager Nickname:
How do I correctly reference these key values?
EDIT: var_dump($line_manager)
returns array data from the users
table rather than the expected usermeta
table. I would have expected it to print the usermeta
.
EDIT 2: The following SQL works as I would expect the WP function to.
global $wpdb,$table_prefix;
$displayed_user = bp_displayed_user_id();
$line_manager_ID = $wpdb->get_var("SELECT meta_value FROM ".$table_prefix."usermeta WHERE user_id = ".$displayed_user." AND meta_key = 'line_manager' ");
echo $wpdb->get_var("SELECT meta_value FROM ".$table_prefix."usermeta WHERE user_id = ".$line_manager_ID." AND meta_key = 'nickname' ");
Upvotes: 3
Views: 1246
Reputation: 5088
Just an idea, see comments explaining a bit better what is happing here...
@redditor in your last paste bin comment you are getting the $line_manager_id
too early, you need to make sure $user_meta['line_manager'][0]
is set before attempting to get this id or you will get an error or warning... see my updated answer below with comments
<?php
// get current user id the wordpress way
// $user_id = get_current_user_id();
// get displayed user your way
$user_id = bp_displayed_user_id();
// get user meta data
$user_meta = get_user_meta($user_id);
// if we have user id
if($user_id) { ?>
User ID: <?=$user_id?>
<br/>
<?php // if line manager array key and sub key 0 is set ?>
<?php if(isset($user_meta['line_manager'][0])) { ?>
<?php // here it is safe to now get the line manager user meta ?>
<?php $lm_user_meta = get_user_meta($user_meta['line_manager'][0]); ?>
Line Manager ID: <?=$user_meta['line_manager'][0]?>
<br/>
<?php // check line manager user meta array nickname key and sub key 0 is set ?>
<?php if(isset($lm_user_meta['nickname'][0])) { ?>
Line Manager Nickname: <?=$lm_user_meta['nickname'][0]?>
<?php } ?>
<?php } ?>
<?php } ?>
Upvotes: 1