サポート » 使い方全般 » author.phpでユーザのカスタムフィールドを出力したい

  • 解決済 kleza

    (@kleza)


    皆様、いつも大変お世話になっております。

    現在author.phpでユーザに追加したカスタムフィールドの
    値を出力しようとしていて壁にぶつかっています。

    author.php

    以下の記述ですとカスタムフィールド(プラグインのTypesを使用)
    の値が出力されません。

    <?php // ユーザIDからユーザ情報の取得
    	$user = new WP_User( get_the_author_meta( 'ID', get_query_var( 'author' ) ) );
    ?>
    <?php // 権限が「center_user」のプロフィールを出力
    	if( in_array( 'center_user', $user->roles ) ) :
    ?>
    	<ul>
    		<li>センター名:<?php echo types_render_usermeta_field("name_center", array()); ?></li>
    		<li>電話番号:<?php echo types_render_usermeta_field("tel_center", array()); ?></li>
    	</ul>
    <?php // 権限が「contributor」のプロフィールを出力
    elseif( in_array( 'contributor', $user->roles ) ) : ?>
    	<?php echo 'Contributor'; ?>
    <?php endif; ?>

    が、以下のようにループの中に記述すると
    出力されます。

    <?php if ( have_posts() ) : the_post(); /* センタープロフィール */ ?>
    	<?php // ユーザIDからユーザ情報の取得
    		$user = new WP_User( get_the_author_meta( 'ID', get_query_var( 'author' ) ) );
    	?>
    	<?php // 権限が「center_user」のプロフィールを出力
    		if( in_array( 'center_user', $user->roles ) ) :
    	?>
    		<ul>
    			<li>センター名:<?php echo types_render_usermeta_field("name_center", array()); ?></li>
    			<li>電話番号:<?php echo types_render_usermeta_field("tel_center", array()); ?></li>
    		</ul>
    	<?php // 権限が「contributor」のプロフィールを出力
    	elseif( in_array( 'contributor', $user->roles ) ) : ?>
    		<?php echo 'Contributor'; ?>
    	<?php endif; ?>
    <?php endif; ?>

    が、上記の記述ですと指定した権限のユーザがデフォルトの「投稿」を一件以上していないと
    出力されません。(投稿があると出力され、望む結果が得られます)

    他のテンプレート(カスタム投稿用に用意した独自テンプレート)ではユーザの
    カスタムフィールドの値が出力されるのですが、author.phpだと前述のように
    なってしまいます。

    ループ外で指定した権限ユーザのカスタムフィールドを取得する書き方を
    すればいいのかなと思うのですが、まだまだWordPressの理解が浅く
    求める結果が得られません。

    いつもお世話になってばかりで大変恐縮ですが
    アドバイスいただけないでしょうか。

    何卒よろしくお願い申し上げます。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • モデレーター jim912

    (@jim912)

    Displaying WordPress User Fields の Display a field for a specific user の項を参考にどうぞ

    トピック投稿者 kleza

    (@kleza)

    jim912さん

    いつもお世話になっております。

    参考記事をお知らせくださりありがとうございます。
    ちゃんと書いてあるのに全然気づかなかったです。
    お恥ずかしい。

    <?php echo types_render_usermeta_field("カスタムフィールド名", array("user_id" => $user_ID)); ?>

    で出力出来ました。

    ありがとうございます。

    トピック投稿者 kleza

    (@kleza)

    上記コメント、訂正します。

    <?php echo types_render_usermeta_field("カスタムフィールド名", array("user_id" => $author)); ?>

    でした。($user_IDではなく$author)

    $user_IDだとログインしているユーザのIDを取得してました。重ね重ねお恥ずかしい限りです(^_^;) author.phpでは$authorでユーザIDを取得でき、求める結果を得ることができました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「author.phpでユーザのカスタムフィールドを出力したい」には新たに返信することはできません。