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

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

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

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

PHP

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

Q&A

1回答

1543閲覧

商品のメニュー表なのですが、こちらのphpコードを短くするにはどのようになりますか。

skr

総合スコア8

WordPress

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

PHP

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

0グッド

0クリップ

投稿2021/03/25 02:29

編集2021/03/26 00:46
繰り返し実行したり、並んでいる順番に数値を出力したり、、、という感じでしょうか。書き方がイマイチわかりません。
  • custom field suiteを使用しています。
  • メニューの「商品名・温・冷・値段」をカスタムフィールドで編集できるようになっています。
  • セットメニューの場合フィールドの名前は、「商品名:s-name1、s-name2、s-name3...」「温:s-hot1,s-hot2,s-hot3...」「冷:s-cold1,s-cold2,s-cold3...」「値段:s-price1,s-price2,s-price3...」というように、商品の増減を予想し多めに登録しています。
  • 商品名の入力欄を空欄にすると、商品名・温・冷・値段全てdisplay: none;になるようにしています。

css

1/*商品名が入力された時*/ 2.openitem { 3 display: block; 4} 5 6/*商品名が空欄の時*/ 7.closeitem { 8 display: none; 9} 10 11/*温冷マーク(チェックにより表示・非表示ができるよう分けています)*/ 12.hot { 13 background-color: #855976; 14 color: #fff; 15 width: 3.5vw; 16 height: 3.5vw; 17 padding: 1.7vw; 18 border-radius: 50%; 19 font-size: 3.5vw; 20} 21 22.cold { 23 background-color: #595C85; 24 color: #fff; 25 width: 3.5vw; 26 height: 3.5vw; 27 padding: 1.7vw; 28 border-radius: 50%; 29 font-size: 3.5vw; 30} 31 32/*値段単位*/ 33.menulist dd[data-unit]::after { 34 content: attr(data-unit); 35 font-size: 3.5vw; 36}

php

1<?php get_header(); ?> 2<?php 3/* 4 Template Name: セット 5 */ 6?> 7 <main class="menulist"> 8 <div class="menulist-background"> 9 <div class="box"> 10 <div class="<?php if ( get_post_meta($post->ID, 's-name1' ,TRUE) ): ?><?php echo 'openitem'; ?><?php else: ?><?php echo 'closeitem'; ?><?php endif; ?>"> 11 <dl> 12 <dt> 13 <div class="menulist-name"> 14 <p><?php echo CFS()->get('s-name1'); ?></p> 15 </div> 16 <span class="<?php if ( get_post_meta($post->ID, 's-hot1' ,TRUE) ): ?><?php echo 'hot'; ?><?php endif; ?>"> 17 <?php if ( get_post_meta($post->ID, 's-hot1' ,TRUE) ): ?><?php endif; ?> 18 </span> 19 <span class="<?php if ( get_post_meta($post->ID, 's-cold1' ,TRUE) ): ?><?php echo 'cold'; ?><?php endif; ?>"> 20 <?php if ( get_post_meta($post->ID, 's-cold1' ,TRUE) ): ?><?php endif; ?> 21 </span> 22 </dt> 23 <dd data-unit="<?php if ( get_post_meta($post->ID, 's-price1' ,TRUE) ): ?><?php echo '円'; ?><?php endif; ?>"><?php echo CFS()->get('s-price1'); ?></dd> 24 </dl> 25 </div> 26 <div class="<?php if ( get_post_meta($post->ID, 's-name1' ,TRUE) ): ?><?php echo 'openitem'; ?><?php else: ?><?php echo 'closeitem'; ?><?php endif; ?>"> 27 <dl> 28 <dt> 29 <div class="menulist-name"> 30 <p><?php echo CFS()->get('s-name2'); ?></p> 31 </div> 32 <span class="<?php if ( get_post_meta($post->ID, 's-hot2' ,TRUE) ): ?><?php echo 'hot'; ?><?php endif; ?>"> 33 <?php if ( get_post_meta($post->ID, 's-hot2' ,TRUE) ): ?><?php endif; ?> 34 </span> 35 <span class="<?php if ( get_post_meta($post->ID, 's-cold2' ,TRUE) ): ?><?php echo 'cold'; ?><?php endif; ?>"> 36 <?php if ( get_post_meta($post->ID, 's-cold2' ,TRUE) ): ?><?php endif; ?> 37 </span> 38 </dt> 39 <dd data-unit="<?php if ( get_post_meta($post->ID, 's-price2' ,TRUE) ): ?><?php echo '円'; ?><?php endif; ?>"><?php echo CFS()->get('s-price2'); ?></dd> 40 </dl> 41 </div> 42 <div class="<?php if ( get_post_meta($post->ID, 's-name3' ,TRUE) ): ?><?php echo 'openitem'; ?><?php else: ?><?php echo 'closeitem'; ?><?php endif; ?>"> 43 <dl> 44 <dt> 45 <div class="menulist-name"> 46 <p><?php echo CFS()->get('s-name3'); ?></p> 47 </div> 48 <span class="<?php if ( get_post_meta($post->ID, 's-hot3' ,TRUE) ): ?><?php echo 'hot'; ?><?php endif; ?>"> 49 <?php if ( get_post_meta($post->ID, 's-hot3' ,TRUE) ): ?><?php endif; ?> 50 </span> 51 <span class="<?php if ( get_post_meta($post->ID, 's-cold3' ,TRUE) ): ?><?php echo 'cold'; ?><?php endif; ?>"> 52 <?php if ( get_post_meta($post->ID, 's-cold3' ,TRUE) ): ?><?php endif; ?> 53 </span> 54 </dt> 55 <dd data-unit="<?php if ( get_post_meta($post->ID, 's-price3' ,TRUE) ): ?><?php echo '円'; ?><?php endif; ?>"><?php echo CFS()->get('s-price3'); ?></dd> 56 </dl> 57 </div> 58               ・ 59               ・  これが繰り返し続きます。 60               ・ 61 </div> 62 </div> 63 </main> 64 </div> 65<?php get_footer(); ?>

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

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

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

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

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

CHERRY

2021/03/25 23:12

カスタムフィールドをどのように保存しているのか不明ですので、どのように保存しているのか質問に追記していただくことは可能ですか? また、データの構造によっては、Custom Field Suite のループフィールド( https://mgibbs189.github.io/custom-field-suite/field-types/loop.html ) を使う方法もあるかも知れません。
skr

2021/03/26 00:39 編集

以下のように保存しています。保存とはこちらのことでよろしいでしょうか汗 商品名「商品名・s-name1・単一行テキスト」 温「温・s-hot1・真/偽(簡易チェックボックス)」 冷「冷・s-cold1・真/偽(簡易チェックボックス)」 値段「値段・s-price1・単一行テキスト」 リンク拝見しました。なるほど!ループフィールドというものが使えそうですね。 [【WordPress】Custom Field Suiteで繰り返しのカスタムフィールドグループを作る](https://deep-space.blue/web/1335)のように使用するのでしょうか。 CSSの装飾も関係する気がしてきたので、追記しておきます。
guest

回答1

0

WPだから記事データを取得してカスタムフィールドの出力をサブループで回せばいいんじゃないかなぁ?
と思うのだけども。

PHPで書くならfor文で数値だけ変数にしてあげればコードは短くなりますよー。
※回数判定を考える必要がありますが。

使用プラグインはたぶんコレかなぁ?
参考URL wordpress.org custom-field-suite
https://ja.wordpress.org/plugins/custom-field-suite/

追記
カスタムフィードと打っていたのを修正しました。(なかなか直らない癖です、すみません)

投稿2021/03/25 03:06

編集2021/03/26 01:49
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

skr

2021/03/25 16:16 編集

お返事遅くなり申し訳ございません!今回もご回答ありがとうございます。 カスタムフィールドはget_postsやWP_Queryなどでしょうか。 また、回数判定にはcountを使用するのでしょうか。 WordPressとphpを触り始めて10日のペーペーなため、基本的な事であろうご質問失礼します汗 get_postsとWP_Queryの違い、for、countの使い方について理解できるよう頑張ります。 使用プラグインはそちらで間違いありません。suiteです!
退会済みユーザー

退会済みユーザー

2021/03/26 02:04

僕のやり方は、 new WP_Query(array());でカスタムフィールドが入っている記事のデータを取得して、 取得したデータを下のループで回しつつ、 <?php while ( $query->have_posts() ) : $query->the_post();?> なんらかの処理 <?php endwhile; ?> カスタムフィールドの値を表示したい場所に下のコードを入れています。 <?php echo get_post_meta($post->ID , 'カスタムフィールド名' ,true); ?> 回数を数える場合は、ループの中で適当な変数countを+1ずつしてあげればよいかと思います。 WPクエリをループで回す場合はカウント不要です。 特殊なケースでのみカウントが必要になるかと思います。 ※Wpクエリ側で絞り切れない記事をPHPで選別して、決めた数だけ表示させるとか※ 以下蛇足です。 カスタムフィールドの値を一括で取得してforeachで回すやり方等もあるかと思います。 WPでの出力方法はいろいろあるので、ご自身にあうものを探してみましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問