🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
WordPress

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

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

1813閲覧

要素の間に反映したい区切り(カンマ)を最後の要素には反映させない

crigw

総合スコア24

WordPress

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

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2019/11/08 03:16

編集2019/11/11 03:01

ワードプレス内のJavaScript, jQuery記述についてお尋ねします。
###やりたいこと
ワードプレスの個別ページにて以下の画像のようにカテゴリー区分を表示させているのですが、最終的には横並びにして「,(カンマ)」で区切りたいと思っています。
元々
最終理想形態

###試したこと
以下が該当部分の表記で、コメントアウト部分を書き換えました。カンマで区切ることはできたのですが、最後の要素(この場合はSketch)にもカンマが表示されてしまいまぬけになりました。

php

1<?php if ( count( $categories_names ) ) { ?> 2 <div class="portfolio-meta-list-item"> 3 <strong><?php echo esc_html( $option['project_categories_text'] ); ?></strong> 4 <p> 5 <?php 6 if ( $support_archive ) { 7 //以下の部分は触っても変化がなかったので放置しているのですが、触るべきでしょうか? 8 $skills = get_the_term_list( $id, 'portfolio_cat', '', '<br>', '' ); 9 echo $skills; 10 } else { 11 foreach ( $categories_names as $name ) { 12 //echo esc_html( $name ) . '<br>'; この部分を以下に書き換えました 13 echo esc_html( $name ) . ', '; 14 //ここに何かしらの記述を追加するのかと思っています。 15 } 16 } 17 ?> 18 </p> 19 </div> 20<?php } ?>

イメージ説明
###求めている答え
上記を踏まえ、最後の要素(この場合はSketch)には echo esc_html( $name ) . ', '; を反映しない記述のしかたを教えていただきたいです。最後の要素のうんぬんについて調べはしたのですが、それらの記述を現状の物にどう落とし込めばいいのかが分からずにこちらに質問させていただきました次第です。
初歩的な質問で大変恐縮ですが、記述の仕方についてご教授のほどよろしくお願い致します。

###追加
イメージ説明

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

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

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

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

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

kyoya0819

2019/11/08 03:42 編集

なんでもなかったです。
m.ts10806

2019/11/08 03:51

「初心者アイコン」を利用し、タイトルや本文からは除いてください
crigw

2019/11/08 06:14

使い方をわかっておらず申し訳ございませんでした。
m.ts10806

2019/11/08 06:16

確固たるルールがあるわけではないですが、質問タイトル、本文は要件のみのほうが回答者としては読みやすくなるのです。 (厳密に言うと冒頭の挨拶とか締めの「よろしくお願いします」すらもないほうが良い)
guest

回答1

0

ベストアンサー

foreach ( $categories_names as $name ) {

$categories_namesをarray_mapしてesc_html()をかました上で
implode()してください

sample

php

1$categories=["test1","test2","test3"]; 2print implode(",",array_map(function($x){return "_".$x."_";},$categories));

投稿2019/11/08 03:40

編集2019/11/08 03:43
yambejp

総合スコア116690

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

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

crigw

2019/11/08 06:15

すみません、もう少し砕いてご教示いただけますでしょうか…!
yambejp

2019/11/08 06:21

わかりにくかったですか、すみません。 まず質問が中途半端です ・$categoriesに配列で文字列がはいっている ・一つずつ取り出して一部編集して表示したい ・それぞれの表示の間にカンマをいれたい ということで間違いないですか? その処理がまず。 ・array_mapをつかって$categoriesのすべてのデータに処理をかける ・それをカンマ区切りにするためにimplodeで合体させる の2つの処理しかしていません。 どこかわからないところがあれば具体的に課題を指摘ください
crigw

2019/11/11 00:59

完全初心者のために何がわかっていないのかもわかっておらず、いろいろ説明が不足しており申し訳ございません。 カテゴリーは投稿画面でカテゴリー欄内の項目にチェックを入れて表示させてます。カテゴリー項目は全部で4つあり、チェックしたものだけ表示されてますので、そのそれぞれの表示の間にカンマを入れたい、と言うことであっています。 $categories=["test1","test2","test3","test4"];  の場合、チェックされていないものがある場合はどうなるのでしょうか?エラーとか起きたりしないでしょうか?その辺もわかっていないのですみません。
yambejp

2019/11/11 01:06

> チェックされていないものがある場合 もとのソースをみても単純に$categoriesをforeachしているだけなので 「チェック」的な処理が判断できません チェックとは何かを明確にしてもらえば回答できるかもしれません
crigw

2019/11/11 03:01

すみません、上手な説明ができないので画像を追加しました。投稿画面のこの部分のチェックのことです。
yambejp

2019/11/11 03:22 編集

カテゴリーはチェックボックスで表示するのですね? チェックしたものだけをカンマ区切りでどこかに表示するのでしょうか? どのタイミングでどこに表示すればいいのですか? (チェックのつけ外しするたびにjsでどこかに表示する感じ?)
crigw

2019/11/11 03:27

チェックしたものだけをカンマで区切って、最後の要素だけカンマをつけないようにしたいです。ページを更新して表示するタイミングでカンマが表示させたいです。現時点、カンマを表示させるところまではできているので、あとは最後の要素にそれを付けないという処理を付け加えるだけです。以下参考ページですが、こちらのCategory部分にやりたい実装です。https://abileweb.com/minimal-portfolio/portfolio/nature-of-girl/
yambejp

2019/11/11 03:37

> 現時点、カンマを表示させるところまではできている その部分がこの部分↓↓↓なんですよね? foreach ( $categories_names as $name ) { echo esc_html( $name ) . ', '; } その部分を echo implode(",",array_map(function($name){return esc_html($name)},$categories_names)); と書き換えてください
crigw

2019/11/11 04:21

です、その部分です。ご教示ありがとうございます! ただ反映したところ エラー: syntax error, unexpected "}" が生じて、項目まるっと表示しまいました…
yambejp

2019/11/11 04:24

失礼、セミコロンがぬけてました echo implode(",",array_map(function($name){return esc_html($name);},$categories_names));
crigw

2019/11/11 05:59

ありがとうございました! 無事に最後の要素にはカンマが付かなくなりました!。。。が、なぜか テスト1,テスト2テスト1,テスト2 といった感じで2回表示されます…、あとカンマのあとに半角スペースを入れたいときは echo implode(","... の ,の後にスペースをいれたらいいでしょうか?
yambejp

2019/11/11 07:09

> 2回表示されます foreachの中でやってませんか? この方法ならforeach自体が不要です。 >カンマのあとに半角スペース ","→", "でいけると思います
crigw

2019/11/11 07:40

おっしゃられる通りforeach内に記載してました、すみません! 最後まで丁寧にご説明いただきありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問