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

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

ただいまの
回答率

90.54%

  • PHP

    23569questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Smart Custom Fieldsを使って、カテゴリーに画像を何枚も表示させたい。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 832

totaminotuyu

score 4

前提・実現したいこと

PHPに関しては全くのど素人なので、初歩的な質問になりますが失礼いたします。
wordpressでECサイト構築プラグイン「Welcart Nova」のテーマを使用しております。
カテゴリーに商品詳細写真を何枚も載せたくて、Smart Custom Fieldsを使う事にいたしましたが、カテゴリーの編集ページでは写真の登録画面が出てくるのですが、実際のカテゴリーページに表示させる事がどうしても出来ません!ネットで「Smart Custom Fields」に関して調べて、ほとんどの事をやってみたのですが駄目でした。たんにPHPの記述方法が間違っているのだとは思うのですが、自己解決できませんでした。
ご教授よろしくお願いいたします。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

現在はエラーメッセージは表示されず、画像を表示させたい場所には何も出てこない状態です。

該当のソースコード

<?php
echo esc_html( SCF::get_term_meta( $term_id, $taxonomy, 'ギャラリー' ) );
?>

試したこと

phpがまったくわからないのですが、ネットで調べた事をほとんど試しました。
作成者様のブログhttps://2inc.org/blog/2015/04/30/4790/を見て記述を色々記述を少し変えたりしました。が駄目でした。
また、こちらのteratailにあったhttps://teratail.com/questions/14171を参考に
テーマのcategory.phpに、
<?php
$repeat_group = SCF::get( '商品紹介' );
foreach ( $repeat_group as $fields ) {
?>
と記述してみたり、
wordpressのフォーラムにあった
https://ja.wordpress.org/support/topic/smart-custom-fields%E3%81%AE%E9%96%A2%E9%80%A3%EF%BC%88%E6%8A%95%E7%A8%BF%E3%82%BF%E3%82%A4%E3%83%97%EF%BC%89%E3%81%AE%E5%87%BA%E5%8A%9B%E6%96%B9%E6%B3%95%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/
を参考に
<?php
$relation = SCF::get( 'ラベル' );
foreach ( $relation as $post_id ) { ?>
<?php echo get_post_meta($post_id, 'scfimg', true); ?>
<?php } ?>
などとしましたが、うまくいきませんでした。色々やっている内に現在の記述が一番正解に近いのではないかと思っておりますが、いかんせんPHP初心者なので時間だけが過ぎていく状態です。

補足情報(言語/FW/ツール等のバージョンなど)

wordpressバージョン → WordPress 4.7.1 
テーマ → WelcartBasicの子テーマ Welcart Nova
Smart Custom Fieldsの
フィールド名 → ギャラリー
グループ名 → 商品紹介
名前 → scfimg
ラベル → scfimg
phpを記述しようとしている箇所 → Welcart Nova: カテゴリーテンプレート (category.php)

お忙しいとは思いますが、宜しくお願い致します。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • kei344

    2017/01/14 11:46

    「ほとんど試しました」とありますが、その試したことと参考にしたURLも追記されたほうが回答を得られやすいと思います。

    キャンセル

  • totaminotuyu

    2017/01/14 19:37

    kei344様。お忙しい中、ご指摘有難うございました。

    キャンセル

回答 1

checkベストアンサー

+1

<?php
$term_id = get_query_var('cat');

// デバッグ用の出力 ここから(消してOK)
?><pre><?php var_dump($term_id); ?></pre><?php
// デバッグ用の出力 ここまで(消してOK)

$objects = SCF::get_term_meta( $term_id, 'category', '商品紹介' );

// デバッグ用の出力 ここから(消してOK)
?><pre><?php var_dump($objects); ?></pre><?php
// デバッグ用の出力 ここまで(消してOK)

foreach ( $objects as $object ) {
    echo wp_get_attachment_image( $object['scfimg'] );
}
?>


デバッグ用の出力は後で消してください。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/01/14 21:45

    miz様。早速のご回答有難うございます。
    上記コードをWelcart Nova: カテゴリーテンプレート (category.php)の表示させたい箇所に記述しましたが、何も表示されませんでした。
    素人ですので、記述箇所も間違っているかもなので、category.phpの中身を下記にすべて記入いたします。
    <?php
    /**
    * @package Welcart
    * @subpackage Welcart_Basic
    */
    get_header();?>

    <div id="primary" class="site-content">

    <?php
    $term_img = $term_class = $term_before = $term_after = '';
    $term_id = get_query_var( 'cat' );
    $term_img_url = get_term_meta( $term_id, 'wcct-tag-thumbnail-url', true );
    if( ! empty( $term_img_url ) ) {
    $term_img = '<p class="taxonomy-img"><img src="' . get_term_meta( $term_id, 'wcct-tag-thumbnail-url', true ) . '"></p>';
    }
    if( wcct_get_options( 'cat_image' ) && ! empty( $term_img_url ) ) {
    $term_class = ' over';
    $term_before = '<div class="wrap"><div class="inner">';
    $term_after = '</div></div>';
    }
    ?>
    <div class="page-header<?php echo $term_class; ?>">
    <?php
    echo $term_img;
    echo $term_before;
    the_archive_title( '<h1 class="page-title">', '</h1>' );
    the_archive_description( '<div class="taxonomy-description">', '</div>' );
    echo $term_after;
    ?>
    </div><!-- .page-header -->

    <div class="content-wrapper">
    <div id="content" role="main">

    <?php if( usces_is_cat_of_item( $term_id ) ): ?>

    <?php if (have_posts()) : ?>

    <div class="cat-il type-grid">

    <?php while (have_posts()) : the_post(); ?>
    <article id="post-<?php the_ID(); ?>">

    <div class="itemimg">
    <a href="<?php the_permalink(); ?>">
    <?php usces_the_itemImage( 0, 300, 300 ); ?>
    <?php if( wcct_get_options( 'display_soldout' ) && ! usces_have_zaiko_anyone() ): ?>
    <div class="itemsoldout">
    <div class="inner">
    <?php _e('SOLD OUT', 'welcart_basic_nova' ); ?>
    <?php if( wcct_get_options( 'display_inquiry' ) ): ?>
    <span class="text"><?php wcct_options( 'display_inquiry_text' ); ?></span>
    <?php endif; ?>
    </div>
    </div>
    <?php endif; ?>
    </a>
    </div>
    <?php wcct_produt_tag(); ?>
    <?php welcart_basic_campaign_message(); ?>
    <div class="item-info-wrap">
    <div class="itemname"><a href="<?php the_permalink(); ?>" rel="bookmark"><?php usces_the_itemName(); ?></a></div>
    <div class="itemprice"><?php usces_crform( usces_the_firstPrice('return'), true, false ) . usces_guid_tax(); ?></div>
    </div><!-- item-info-box -->

    </article>
    <?php endwhile; ?>

    </div><!-- .cat-il -->

    <?php else: ?>

    <p class="no-date"><?php echo __('No posts found.', 'usces'); ?></p>

    <?php endif; ?>

    <?php else : ?>

    <?php if (have_posts()) : ?>

    <div class="post-li">
    <?php while (have_posts()) : the_post(); ?>
    <article id="post-<?php the_ID(); ?>">
    <?php if ( has_post_thumbnail() ): ?>
    <div class="thumb-img"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a></div>
    <?php endif; ?>
    <p><time datetime="<?php the_time('c'); ?>"><?php the_time(__('Y/m/d')) ?></time></p>
    <div class="post-title"><a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php printf( esc_attr__( 'Permalink to %s', 'welcart_basic' ), the_title_attribute( 'echo=0' ) ); ?>"><?php the_title(); ?></a></div>
    <?php the_excerpt() ?>
    </article>
    <?php endwhile; ?>
    </div>

    <?php
    $term_id = get_query_var('cat');

    ?><pre><?php var_dump($term_id); ?></pre><?php

    $objects = SCF::get_term_meta( $term_id, 'category', '商品紹介' );

    ?><pre><?php var_dump($objects); ?></pre><?php

    foreach ( $objects as $object ) {
    echo wp_get_attachment_image( $object['scfimg'] );
    }
    ?>
    <?php else: ?>

    <p class="no-date"><?php echo __('No posts found.', 'usces'); ?></p>

    <?php endif; ?>

    <?php endif; ?>

    <div class="pagination_wrapper">
    <?php
    $args = array (
    'type' => 'list',
    'prev_text' => __( ' &laquo; ', 'welcart_basic' ),
    'next_text' => __( ' &raquo; ', 'welcart_basic' ),
    );
    echo paginate_links( $args );
    ?>
    </div><!-- .pagenation-wrapper -->

    </div><!-- #content -->

    <?php get_sidebar(); ?>
    </div><!-- .content-wrapper -->

    </div><!-- #primary -->

    <?php get_footer(); ?>

    になります。

    カテゴリーページは、
    http://amami-setouti.com/category/item/tankan/
    になります。
    何かおかしな部分があるのでしょうか?
    crlプラスshiftプラスDeleteキーでキャッシュの削除をやっても一緒です。
    後、恥の上塗りになるような質問ですが、「デバッグ用の出力は後で消してください。」とは、具体的にどの部分になるのでしょうか?
    宜しくお願い致します。

    キャンセル

  • 2017/01/14 22:03

    出力されない箇所に書かれていますね。
    `</div><!-- .page-header -->`の上あたりに書いてみてください。

    後、「デバッグ用の出力」箇所について、回答にコメントを記載しましたので見てみてください。

    キャンセル

  • 2017/01/15 08:16

    出力されました!!
    私は「出力されない箇所」で色々やっていたんですね(汗)
    昼間の仕事を終わってからですが、約一か月間出来なかった事が「teratail」と「miz様」に出会えた事で、一日で解決致しました。感動です。
    また、本当にど素人な私を駄目だしする事なく、細部までご指導頂き本当に助かりました。
    紳士的な対応に感動です!!!
    お陰様で、私が完成させたいHPの完成形が見えてきました。PHPの勉強も合わせてこれから頑張って行きます。

    キャンセル

同じタグがついた質問を見る

  • PHP

    23569questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。