web-dev-qa-db-ja.com

ユーザーの略歴を表示する方法(作成者またはログインユーザーではありません)

(phpで)特定のユーザーのアバターとバイオ(説明)、およびそれらのソーシャルメディアを(プロファイル情報フィールドに基づいて)表示したいと思います。たとえば、ページ1で、ページを書いた人またはページを読んでログインしている人に関係なく、ユーザーWalt Whitman(ユーザー番号9999)の写真、説明(略歴)、ソーシャルメディアリンクを表示します。

アバターを表示できます:

<?php echo get_avatar( '[email protected]', 32 ); ?>

いくつか試してみましたが、うまくいきません。すべてのメタの完全な表示または致命的なエラー(「must be string」などのさまざまな致命的なエラー)が表示されます。

<?php the_user_meta( 'description' ); ?>

または

<?php $userdata = get_user_meta( 9999 ); ?><?php echo $userdata['description']; ?> 

私が使用する場合

<?php $user = wp_get_current_user( 9999 ); if ( $user->exists() ) // is_user_logged_in() is a wrapper for this line $userdata = get_user_meta( $user->data->ID ); ?><pre><?php var_dump( $userdata ); ?></pre><?php echo $userdata['description'] ; ?>

致命的なエラーが発生します。

1
Justin Munce

あなたが利用することができます

現在ログインしているユーザーIDを取得します。

いずれにしても、ユーザーのメタデータを取得する前に、ログインしているユーザー(ユーザーIDが0ではない)であることを確認する必要がありますデータベースから。

ユーザーIDを取得したら、 get_user_meta() を使用して、dbからユーザーの情報を返すことができます

例:

$user = wp_get_current_user();
if ( $user->exists() ) { // is_user_logged_in() is a wrapper for this line
    $userdata = get_user_meta( $user->data->ID );
    ?><pre><?php var_dump( $userdata ); ?></pre><?php
}

編集

これは非常に基本的なPHPです。以下が返されます

$userdata = get_user_meta( 1 );
    ?><pre><?php var_dump( $userdata ); ?></pre><?php

var_dump()

array(29) {
  ["first_name"]=>
  array(1) {
    [0]=>
    string(6) "Pieter"
  }
  ["last_name"]=>
  array(1) {
    [0]=>
    string(6) "Goosen"
  }
  ["nickname"]=>
  array(1) {
    [0]=>
    string(12) "pietergoosen"
  }
  ["description"]=>
  array(1) {
    [0]=>
    string(349) "My naam is Pieter Goosen BLAH BLAH BLAH"
  }
  ["rich_editing"]=>
  array(1) {
    [0]=>
    string(4) "true"
  }
  ["comment_shortcuts"]=>
  array(1) {
    [0]=>
    string(5) "false"
  }
  ["admin_color"]=>
  array(1) {
    [0]=>
    string(5) "fresh"
  }
  ["use_ssl"]=>
  array(1) {
    [0]=>
    string(1) "0"
  }
  ["show_admin_bar_front"]=>
  array(1) {
    [0]=>
    string(5) "false"
  }
  ["wp_capabilities"]=>
  array(1) {
    [0]=>
    string(31) "a:1:{s:13:"administrator";b:1;}"
  }
  ["wp_user_level"]=>
  array(1) {
    [0]=>
    string(2) "10"
  }
  ["dismissed_wp_pointers"]=>
  array(1) {
    [0]=>
    string(143) "wp330_toolbar,wp330_saving_widgets,wp340_choose_image_from_library,wp340_customize_current_theme_link,wp350_media,wp360_revisions,wp390_widgets"
  }
  ["show_welcome_panel"]=>
  array(1) {
    [0]=>
    string(1) "0"
  }
  ["wp_user-settings"]=>
  array(1) {
    [0]=>
    string(120) "libraryContent=browse&imgsize=full&align=right&editor=html&hidetb=1&mfold=o&unfold=1&urlbutton=post&posts_list_mode=list"
  }
  ["wp_user-settings-time"]=>
  array(1) {
    [0]=>
    string(10) "1447257892"
  }
  ["wp_dashboard_quick_press_last_post_id"]=>
  array(1) {
    [0]=>
    string(3) "463"
  }
  ["Twitter"]=>
  array(1) {
    [0]=>
    string(0) ""
  }
  ["facebook"]=>
  array(1) {
    [0]=>
    string(15) "pietergoosencom"
  }
  ["managenav-menuscolumnshidden"]=>
  array(1) {
    [0]=>
    string(89) "a:4:{i:0;s:11:"link-target";i:1;s:11:"css-classes";i:2;s:3:"xfn";i:3;s:11:"description";}"
  }
  ["metaboxhidden_nav-menus"]=>
  array(1) {
    [0]=>
    string(102) "a:4:{i:0;s:8:"add-post";i:1;s:14:"add-informasie";i:2;s:12:"add-post_tag";i:3;s:15:"add-post_format";}"
  }
  ["nav_menu_recently_edited"]=>
  array(1) {
    [0]=>
    string(3) "130"
  }
  ["closedpostboxes_page"]=>
  array(1) {
    [0]=>
    string(6) "a:0:{}"
  }
  ["metaboxhidden_page"]=>
  array(1) {
    [0]=>
    string(94) "a:4:{i:0;s:10:"postcustom";i:1;s:16:"commentstatusdiv";i:2;s:7:"slugdiv";i:3;s:9:"authordiv";}"
  }
  ["closedpostboxes_post"]=>
  array(1) {
    [0]=>
    string(6) "a:0:{}"
  }
  ["metaboxhidden_post"]=>
  array(1) {
    [0]=>
    string(6) "a:0:{}"
  }
  ["closedpostboxes_positions"]=>
  array(1) {
    [0]=>
    string(6) "a:0:{}"
  }
  ["metaboxhidden_positions"]=>
  array(1) {
    [0]=>
    string(6) "a:0:{}"
  }
  ["rtladminbar"]=>
  array(1) {
    [0]=>
    string(3) "ltr"
  }
  ["session_tokens"]=>
  array(1) {
    [0]=>
    string(285) "a:1:{s:64:"fa12574e7a42af2a8944d764c21bda64a5a5ee4572b1fbceb027d8b4af5afcd3";a:4:{s:10:"expiration";i:1448467488;s:2:"ip";s:3:"::1";s:2:"ua";s:108:"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36";s:5:"login";i:1447257888;}}"
  }
}

したがって、説明を表示する必要がある場合は、次のことができます

echo $userdata['description'][0];

配列内の値を参照する方法を学習するには、配列がどのように機能するか、およびそれらを参照する方法の非常に基本的なことを実際に必要として学習する必要があります。

編集

以下は正確なユースケースです

$walt_id = 1; // Make sure you have the correct ID here
$userdata = get_user_meta( $walt_id );
echo $userdata['description'][0];

これが機能しない場合は、コメントで述べたようにデバッグする必要のある深刻な問題がどこかにあります

3
Pieter Goosen

get_user_byを使用して、メールアドレスからユーザーIDを取得できます。これは、上記で利用可能なデータのようです。その後、そのユーザーIDから get_userdata または get_user_meta を使用して、他のすべてのメタフィールドをプルできます。

例えば:

$user = get_user_by( 'email', '[email protected]' );
$userdata = get_userdata( $user->ID );

$first_name = $userdata-> first_name;
1
Mike Selander

(私は私です。)

これを解決する2つのオプション。これらを使用して、Webサイトに登録されているユーザーの情報を表示できます。 1つのOR 2つの(つまり、より多くの)ものを表示する方法を示します。

1)Pieter Goosen way(私は上記の答えが正しいことを確認しました-もう一度Pieterに感謝します) 。

ひとこと:

<?php $walt_id = 9999; // Make sure you have the correct ID here
$userdata = get_user_meta( $walt_id );
echo $userdata['description'][0]; 
?>

複数のこと:

<?php $walt_id = 9999; // Make sure you have the correct ID here
$userdata = get_user_meta( $walt_id );
echo $userdata['description'][0]; 
echo $userdata['first_name'][0]; 
?>

2)stephencottontail way:

ひとこと:

<?php the_author_meta( 'user_description', 9999 ); ?> </br>

複数のこと:

<?php the_author_meta( 'user_description', 9999 ); ?> </br>
<?php the_author_meta( 'first_name', 9999 ); ?>
0
Justin Munce