質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

2回答

664閲覧

WordPressのAdvanced Custom Fieldsの繰り返しフィールドでユーザー情報を出力したいです。

jyoze

総合スコア48

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

1クリップ

投稿2017/07/13 07:23

編集2017/07/14 08:07

###実現したいこと
WordPressのAdvanced Custom Fieldsの繰り返しフィールドでユーザー情報を複数出力したいです。
(プラグインなどでもっと簡単な方法があれば、教えていただけきたいです。)
###発生している問題
シングルページで
ユーザーを数人選択し表示させるため、
Advanced Custom Fieldsの繰り返しフィールドを使い、
フィールドタイプにユーザーを選択し、出力させたいと思いました。
また、同じくAdvanced Custom Fieldsを使いユーザー情報の項目も増やしました。

上記を出力するため、いろいろ調べまして、下記のコードを記述したのですが、
何も出力されない状態で、ループ内に入れることで、名前だけは出力できました。
しかし、名前も複数登録すると、全員同じ名前になります。

##カスタムフィールドに登録した項目

▼ユーザー設定画面に増やした項目:フィールド名
テキストフィールド:position
ユーザー画像:author_img (返り値:画像 配列)

▼カスタム投稿のシングルページに設定した繰り返しフィールド
フィールド名:works_author
サブフィールド:works_author_box(フィールドタイプ:ユーザー)

##コード

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <?php if(get_field('works_author')): ?> <?php while(the_repeater_field('works_author')): ?> <figure> <?php if(get_sub_field('works_author_box')) : ?> <?php $author_id = get_the_author_meta('ID'); $author_badge = get_field('author_img', 'user_'. $author_id ); ?> <img src="<?php echo $author_badge['url']; ?>" alt="<?php echo $author_badge['alt']; ?>" /> <figcaption> <?php the_author_meta('first_name'); ?><?php the_author_meta('last_name'); ?> <span>(<?php the_author_meta('position'); ?>)</span> </figcaption> <?php endif; ?> </figure> <?php endwhile; ?> <?php endif; ?> <?php endwhile; ?><?php endif; ?>

##出力結果

<figure> <img src="" alt="" title=""> <figcaption> Firstname1Lastname1 <span>()</span> </figcaption> </figure> <figure> <img src="" alt="" title=""> <figcaption> Firstname1Lastname1 <span>()</span> </figcaption> </figure>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

get_the_author_metaで取得できるのはそのページの作成者情報なので、同一ユーザーの情報しか返されません。
以下のようにしてみてください。

php

1<?php 2 if ( have_rows( 'works_author' )) { 3 while( have_rows( 'works_author' )) { 4 the_row(); 5 $value[] = get_sub_field( 'works_author_box' ); 6 } 7} 8 $id = array_column( $value, 'ID' ); 9 foreach ( $id as $author_id ): 10 $author_badge = get_field( 'author_img', 'user_'. $author_id ); 11?> 12<figure> 13 <img src="<?php echo $author_badge['url']; ?>" alt="<?php echo $author_badge['alt']; ?>" /> 14 <figcaption> 15 <?php the_author_meta( 'first_name' ,$author_id ); ?><?php the_author_meta( 'last_name' , $author_id ); ?> 16 <span><?php the_author_meta( 'position' ,$author_id ); ?></span> 17 </figcaption> 18</figure> 19<?php endforeach; ?> 20 21

投稿2017/07/18 15:00

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jyoze

2017/07/19 04:26

ay03さん ご回答ありがとうございます。 早速ご教示いただいたソースでためしてみたのですが、 エラーがでて表示されないようです。 ソースを確認すると「$id = array_column( $value, 'ID' );」 この部分がエラーと表示されるのですが、何がエラーになっているのかわかりません。 申す訳ありませんが、ご確認いただくことは可能でしょうか。
退会済みユーザー

退会済みユーザー

2017/07/19 05:59

PHPのバージョンを5.5以上に上げられませんか? それが無理なら以下のページの内容をfunctions.phpに追加してください。 https://github.com/ramsey/array_column/blob/master/src/array_column.php 可能ならなるべく新しいバージョンで運用した方が良いと思いますがね…
jyoze

2017/07/19 06:55

ご連絡ありがとうございます。 先程サーバー会社に電話で確認したのですが、PHPのバージョンは5.3.3で、変更はできないとのことでした・・・。いただいているもう一つの方法を試してみます。
jyoze

2017/07/19 07:09

functions.phpに https://github.com/ramsey/array_column/blob/master/src/array_column.php を入れてみたのですが、エラーが出ます。 Warning: array_column() expects parameter 1 to be array, NULL given in /home/****/public_html/****/wp-content/themes/****/functions.php on line 49 LINE49:「);」←GitHubサイトでは47行目です。 Warning: Invalid argument supplied for foreach() in /home/****/public_html/****/wp-content/themes/****/single-works.php on line 33 LINE33:「foreach ( $id as $author_id ):」 やはりPHP5.5以上がでないと難しいでしょうか。
jyoze

2017/07/19 07:19

ay03さん 申し訳ありません。 私の記述ミスでした。 もう一度試してみます! お手数をおかけし申し訳ありません。
jyoze

2017/07/19 07:48

ay03さん 無事表示できました! ありがとうございます。 記述の内容はまだ把握できていなですが、これから一つ一つ調べていこうと思います。 本当にありがとうございました!
guest

0

ACFはほとんど使わないので修正案に自信はありませんが、works_author_box の値を使っていないことが問題では。

PHP

1// $author_id = get_the_author_meta('ID'); 2// ↓ 3 $author_id = get_sub_field('works_author_box');

PHP

1// the_author_meta('first_name'); 2// ↓ 3 the_author_meta('first_name', $author_id);

PHP

1// the_author_meta('position'); 2// ↓ 3 the_field('position', 'user_'. $author_id );

【get_the_author_meta() | Function | WordPress Developer Resources】
https://developer.wordpress.org/reference/functions/get_the_author_meta/

【Advanced Custom Fields でプロフィールを拡張 | WordPressでホームページ制作 太陽ブログ】
http://web-taiyo.com/wordpress-plugin/130206.html

【ACF | Get values from a user】
https://www.advancedcustomfields.com/resources/how-to-get-values-from-a-user/

投稿2017/07/16 08:31

kei344

総合スコア69364

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jyoze

2017/07/18 11:22

kei344さん ご回答ありがとうございます。 いただいた記述や参考サイトも参考にさせていただいたのですが、 まだうまく表示されていない状態です。 もう少しいろいろ触ってみます。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問