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

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

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

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

PHP

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

Q&A

解決済

2回答

283閲覧

【PHP】選択した内容に紐付いた画像(アイコン)を表示したいです。

nanasense

総合スコア12

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/09/25 14:18

編集2018/09/25 14:18

実現したいこと

WordPressのコメント欄で、閲覧者がコメントする際に男性女性を選んでコメントできるようにして、さらにその選ばれた項目によって、アイコンを表示したいです。

現状

参考サイト
Wordpress コメント項目を追加する | webデザイナーの改造屋ブログ

wordpressの投稿に対するコメントのデフォルト項目は名前、メールアドレス、URL、コメント。そこに(例)男女選択項目を追加します。テーマフォルダの中のfunctions.phpにどんんどんコピペ。まずは入力項目欄。 add_filter( 'comment_form_defaults','change_comment_form_sex'); function change_comment_form_sex($default) { $commenter = wp_get_current_commenter(); $default['fields']['email'] .= '<p class="comment-form-author">' . '<label for="sex">'. __('性別') . ''</label> <select id="sex" class="sex" name="sex"> <option value="">性別 <option value="男性">男性 <option value="女性">女性 </select> </p>'; return $default; } 次に男女選択項目欄を入力必須にするためのコード add_filter( 'preprocess_comment', 'verify_comment_meta_data_sex' ); function verify_comment_meta_data_sex($commentdata) { if ( ! isset( $_POST['sex'] ) ) wp_die( __('Error: please fill the required field (sex).') ); return $commentdata; } 次にここで入力(選択)された情報をコメント情報と一緒にデータベースに登録するためのコード。データはテーブル「wp_postmeta」に入ります。 add_action( 'comment_post', 'save_comment_meta_data_sex' ); function save_comment_meta_data_sex( $comment_id ) { $sexies = explode(',', $_POST['sex']); foreach ($sexies as $sex) echo update_comment_meta( $comment_id, 'sex', $sex, true); } で最後に表示するためのコード add_filter( 'get_comment_author_link', 'attach_sex_to_author' ); function attach_sex_to_author( $author ) { $sexies = get_comment_meta( get_comment_ID(), 'sex', false ); if ( $sexies ) { foreach ($sexies as $sex) $author .= $sex . ' '; } return $author; } 追加する項目が複数ある時はピンクやオレンジの名前を変えてね。

現状、上記のサイトを参考にコメント欄の「男性女性」の選択項目実装までは完了しています。
イメージ説明

ただ、上記のままだと男性を選んでコメントしても女性を選んでコメントしても、コメント欄にアイコンの表示はされません。

イメージ説明

男性を選んだ時は男性のアイコンを、女性が選ばれたときは女性のアイコンを表示させたいのですが、その画像(アイコン)のURLをどこにどのように記載すれば表示されるのかが分かりません。

どなたか分かる方がいれば、ご助言お願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

functions.phpに以下のコードを追記してみてください。
画像のURLはテスト用にYahooさんの画像を拝借していますのでご自身のものに置き換えてください。

add_filter('get_avatar_url', 'get_avatar_sex_url', 99, 3); function get_avatar_sex_url($url, $id_or_email, $args) { if (have_comments()) { $sexies = get_comment_meta(get_comment_ID(), 'sex', false); if ($sexies) { foreach ($sexies as $sex) { if ($sex == '男性') { return 'https://s.yimg.jp/c/icon/s/bsc/2.0/mail80.png'; } if ($sex == '女性') { return 'https://s.yimg.jp/c/icon/s/bsc/2.0/shopping80.png'; } } } } return $url; }

投稿2018/09/26 02:04

編集2018/09/26 02:22
tabuu

総合スコア2449

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

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

nanasense

2018/09/26 11:00

無事、表示ができました!本当にありがとうございます!! 最後に一つ質問なのですが、自分が参考にした「コメント項目を追加する」に載っているコード(質問に掲載済みのコード)をそのままコピペで貼り付けた状態で、名前を「テスト」と入力して、男性を選択してコメントすると、コメント者の名前が「テスト 男性」となっていまいます。 おそらく選択した男性、女性の値が、入力した名前と一緒に表示する設定になっていると思われるのですが、どの部分のコードを消せば入力した名前のみを表示させることができるのでしょうか? 画像表示に関しては、tabuu様のコードで問題なく表示ができました! ありがとうございました!!
tabuu

2018/09/26 22:52

以下のコードを削除すれば名前がそのまま表示されるはずです。 add_filter( 'get_comment_author_link', 'attach_sex_to_author' ); function attach_sex_to_author( $author ) { $sexies = get_comment_meta( get_comment_ID(), 'sex', false ); if ( $sexies ) { foreach ($sexies as $sex) $author .= $sex . ' '; } return $author; }
guest

0

docroot配下にindex.phpというファイルを作成していると
http://(設定したドメイン or IPアドレス)/index.php
docroot/index.phpにアクセスできると思います。

画像も同じ要領で
docroot/img/women.jpg
という様に配置すると
http://(設定したドメイン or IPアドレス)/img/women.jpg
でアクセスできる様になります。

あとはimgタグを使用して以下の様に指定すれば良いと思います。
<img src="http://(設定したドメイン or IPアドレス)/img/women.jpg">
women.jpgはphpの変数(例えば$file)で渡す様にして
"<img src="http://(設定したドメイン or IPアドレス)/img/".$file.">"
という風にすれば表示されると思います。($fileは男が選択された時はmen.jpg, 女が選択された時はwomen.jpg等にする)

投稿2018/09/25 15:07

編集2018/09/25 15:08
soich

総合スコア176

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

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

nanasense

2018/09/26 11:01 編集

無事、解決しました! ご助言ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問