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

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

ただいまの
回答率

90.11%

wordpressで複数画像出力(krc-cast-manager)

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,944

awazon78

score 25

krc-cast-manager*というプラグインを使用してカスタムフィールドに登録した画像(複数)を出力させるのにてこずっています。。
*krc-cast-managerは簡単に言うとキャストをカスタム投稿タイプで登録して、カスタムフィールドに画像や出退勤表などを簡単に挿入出来るプラグインです。

肝心の画像を出力させる部分は公式サイトから抜粋しますが

基本的に【krc_cast】というカスタム投稿タイプとして作成されており、タイトル・本文は通常の投稿や固定ページと同じように使用できます。

・キャスト画像
画像アップローダーを使用してキャスト画像をアップロードして下さい。画像は複数アップロードでき、アップロードした画像はドラッグアンドドップで並び替えが可能です。
登録した情報はpost_idに紐付けられpostmetaテーブルに下記の様に保存されます。
[“http://aaa.aa/wp-content/uploads/2015/03/176212385754c3b7a63dc88.jpg”,”http://aaa.aa/wp-content/uploads/2015/03/57253755254f199358bcf6.jpg”,”http://aaa.aa/wp-content/uploads/2015/03/485570105426cb9604e66.jpg”]

書いてあります。
実際僕が書いてるソースは

該当のソースコード

<?php
    $wp_query = new WP_Query();
    $param = array(
        'posts_per_page' => '-1', //表示件数。-1なら全件表示
        'post_type' => 'krc_cast', //カスタム投稿タイプの名称を入れる
        'post_status' => 'publish', //取得するステータス。publishなら一般公開のもののみ
        'orderby' => 'ID', //ID順に並び替え
        'order' => 'DESC'
    );

    $wp_query->query($param);

    if ($wp_query->have_posts()): while ($wp_query->have_posts()) : $wp_query->the_post();
            ?>
            <li>
                <ul>
                    <li>タイトル : <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
                   <li>画像 : <img src="<?php echo the_field('_krc_cast_screens'); ?>" alt="" /> </li>
                    <li>カスタムのネーム : <?php echo post_custom('_krc_name'); ?></li>

=====以下省略


そうすると画像のところは

["http://tokyo.clubs-nagoya.com/wp-content/uploads/2016/08/YLn3r.jpg",
"http://tokyo.clubs-nagoya.com/wp-content/uploads/2016/08/big-boobs-ship1_15.jpg",
"http://tokyo.clubs-nagoya.com/wp-content/uploads/2016/08/mig.jpg"]"


の様に表示されてしまいます。(見やすくするため , で改行しています)

[""]で囲まれいて、なおかつ画像のパスが全て入っています。

この画像をうまく表示したいのですがどうしたらいいでしょうか?

ちなみに画像以外は上手く表示されています。

ちなみに最初の一枚だけ表示できれば大丈夫です。
もし可能であれば個別ページですべての画像を表示できるようにもしたいです。

よろしくお願いします

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kei344

    2016/08/26 04:12

    「公式サイトから抜粋しますが 」に続くコードブロックは通常の文章として表示されるか、全てが引用であるなら「> 」を先頭につけて引用にしていただけませんか?

    キャンセル

  • awazon78

    2016/08/26 10:15

    通常の文章にしました。よろしくお願いします

    キャンセル

  • kei344

    2016/08/27 00:03

    こちらの環境では変更/修正が確認できませんでした。すみませんが、もう一度確認してもらえませんか?最近teratailで修正が保存されない事がたまにあるようなので・・・。

    キャンセル

回答 1

checkベストアンサー

+1

_krc_cast_screensの値は、画像URLの配列をjson_encodeにかけて
ひとまとめの文字列にしてあるようで(管理上の都合か、レコード数の節約だと思います)
これを再びPHPで利用可能な形に戻すにはjson_decodeにかける必要があります。

// 古いバージョンのPHPだとダメかもしれない
<?php $screen = json_decode(get_field('_krc_cast_screens'), true)[0]; ?>

// その場合こっちで(やっていることは同じです)
<?php
$krc_cast_screens = get_field('_krc_cast_screens');
$screens = json_decode($krc_cast_screens, true);
$screen = $screens[0];
?>

// 出力
<li>画像 : <img src="<?php echo $screen; ?>" alt="" /> </li>


これでPHPで扱える普通の配列になっているので、foreachするなり
$screens[0]で先頭のURLだけ使うなり好きにできます。


試しに_krc_cast_screensで検索してみたら、プラグインの作者さんが書いた
サンプルページがヒットしました。すでにご確認済みかもしれませんが一応リンクしておきます。

https://kurubusi.net/products/sample/sample_krc-cast-manager/

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/27 01:54

    回答ありがとうございます!なかなかうまく表示されないですね。
    試しにサンプルページをそのまま使用してみたのですが、うまく表示できません。。

    ちなみに私は、twentysixteenを元にテーマを作成していて、home画面を編集しています。
    home.phpにそのままサンプルコードを張り付けてみたのですが表示されませんでした。(質問のところに書いたコードでは表示できます。)
    もしかしたらfunction.phpとかでバッティングしてるのでしょうかね。。

    キャンセル

  • 2016/08/27 11:04 編集

    すみません、回答に1箇所間違いがあったので編集しました。
    (get_fieldとするべきところをthe_fieldにしていました)
    この内容でもう一度試してみてください。

    キャンセル

  • 2016/08/27 11:33

    おおおおおおおおおお出来ました!
    初心者の私にわかりやすく説明していただいて、本当にありがとうございます!
    またお世話にかもしれませんので、その時はよろしくお願いします。

    キャンセル

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

  • ただいまの回答率 90.11%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる