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

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

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

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

PHP

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

831閲覧

wordpress で固定ページ毎にコメント項目を変えたい。

nonkozo

総合スコア2

WordPress

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

PHP

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/04/20 08:04

前提・実現したいこと

wp で固定ページのコメントをカスタマイズしました。表示項目追加、ラジオボタン設定などfunction.phpに設定しました。
固定ページAとC → 項目1,2,3,4,5
固定ページB → 項目1,2,4,5
ここに質問の内容を詳しく書いてください。
テーマはcocoonです。
固定ページA,Cでは 名前、お住い、画像(アバター領域を使って複数のアバターからラジオボタンで画像を選択してコメント欄に表示)、メールアドレス、コメント欄の順に表示しています。
固定ページBでは、画像の選択や表示は不要なので省きたいのです。

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

エラーメッセージ

該当のソースコード

ソースコード // /*コメント項目の追加20210327*/ add_filter( 'comment_form_default_fields', 'add_comment_fields' ); function add_comment_fields( $fields ) { $fields['jyuu'] = '<p class="comment-form-jyuu"><label for="jyuu">' . __( 'お住まい(都道府県または国)' ) . '</label>' . '<input id="jyuu" name="jyuu" type="text" size="25" /></p>'; return $fields; } //comment-post.phpに設定// //コメント送信先 add_action( 'comment_post', 'add_comment_meta_values', 1 ); function add_comment_meta_values( $comment_id ) { if ( isset( $_POST['jyuu'] ) ) { $jyuu = wp_filter_nohtml_kses( $_POST['jyuu'] ); add_comment_meta( $comment_id, 'jyuu', $jyuu, false ); } } //管理画面にコメント追加項目を表示 function manage_comment_columns($columns) { $columns['jyuu'] = "お住まい"; return $columns; } function add_comment_columns($column_name, $comment_id) { if( $column_name == 'jyuu' ) { $jyuu = get_comment_meta( $comment_id, 'jyuu', true ); echo attribute_escape($jyuu); } } add_filter( 'manage_edit-comments_columns', 'manage_comment_columns' ); add_action( 'manage_comments_custom_column', 'add_comment_columns',null, 2); //コメント一覧に追加項目を表示// add_filter( 'get_comment_author_link', 'attach_area_to_author' ); function attach_area_to_author( $author ) { $jyuus = get_comment_meta( get_comment_ID(), 'jyuu'); if ( $jyuus ) { foreach ($jyuus as $jyuu) $author .= '(' . $jyuu . ')'; } return $author; //コメント者の後に続けて出力。 } //スレッドの内容20210327 function thread_comment($comment, $args, $depth) { $GLOBALS['comment'] = $comment; ?> <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>"> <div id="comment-<?php comment_ID(); ?>"> <div class="comment-listCon"> <div class="comment-info"> <?php echo get_avatar( $comment, 100 );//アバター画像 ?> <?php printf('<span class="admin">名前:<cite class="fn comment-author">%s</cite></span> ', get_comment_author_link()); //投稿者の設定 ?> <?php printf('<span class="required">お住まい:<cite class="fn comment-jyuu">%s</cite></span> ', get_comment_jyuu_link()); //お住まいの設定 ?> /*            <?php echo get_comment_meta( $comment->comment_ID, ‘jyuu’, true ); ?><br>*/ /* get_comment_meta($comment->comment_ID, 'jyuu', true) printf( __( '<span>お住まい:</span><cite class="fn">%s</cite>' ), get_comment_meta($comment->comment_ID, 'jyuu', true) );*/ <span class="comment-datetime">投稿日:<?php printf('%1$s %2$s', get_comment_date('Y/m/d(D)'), get_comment_time('H:i:s')); //投稿日の設定 ?></span> <span class="comment-id"> ID:<?php //IDっぽい文字列の表示(あくまでIDっぽいものです。) $ip01 = get_comment_author_IP(); //書き込んだユーザーのIPアドレスを取得 $ip02 = get_comment_date('jn'); //今日の日付 $ip03 = ip2long($ip01); //IPアドレスの数値化 $ip04 = ($ip02) * ($ip03); //ip02とip03を掛け合わせる echo mb_substr(sha1($ip04), 2, 9); //sha1でハッシュ化、頭から9文字まで出力 //echo mb_substr(base64_encode($ip04), 2, 9); //base64でエンコード、頭から9文字まで出力 ?> </span> <span class="comment-reply"> <?php comment_reply_link(array_merge( $args, array( 'depth' =>$depth, 'max_depth' =>$args['max_depth']))) ?> </span> <span class="comment-edit"><?php edit_comment_link('編集',' ',''); //編集リンク ?></span> </div> <?php if ($comment->comment_approved == '0') : ?> <em>あなたのコメントは現在承認待ちです。</em> <?php endif; ?> <div class="comment-text"></div> <?php comment_text(); //コメント本文 ?> <?php //返信機能は不要なので削除 ?> </div> </div> <?php } //お住まいの情報をデータベースに追加する add_action( 'comment_post', 'save_comment_meta_data_jyuu' ); function save_comment_meta_data_jyuu( $comment_id ) { $jyuu = explode(',', $_POST['jyuu']); foreach ($jyuu as $jyuu) echo update_comment_meta( $comment_id, 'jyuu', $jyuu, true); } /*アバター選択制2021.03.28*/ //get_avatarの画像URLを書き換える function new_get_avatar_data($args,$id_or_email){ $check_avatar =null; $user = null; $hash = null; if($args['found_avatar'] == true){ if ( ! empty( $id_or_email->user_id )){ $user = get_user_by( 'id', (int) $id_or_email->user_id ); $email = $user->user_email; } if ( ( ! $user || is_wp_error( $user ) ) && ! empty( $id_or_email->comment_author_email ) ) { $email = $id_or_email->comment_author_email; } if(! empty($email)){ $hash = md5( strtolower( trim( $email ) ) ); } $uri = 'http://www.gravatar.com/avatar/' . $hash . '?d=404'; $headers = @get_headers($uri); if (preg_match("|200|", $headers[0])) { $check_avatar = TRUE; } } if(!empty($id_or_email)){ $flower = get_comment_meta($id_or_email->comment_ID);} if(is_object($id_or_email) && isset( $id_or_email->user_id ) && empty($check_avatar) && ! empty($flower)){ $flower = $flower['flower'][0]; if($flower == 'hasu'){ $args['url'] = 'https://cft-info.com/wp-content/uploads/2021/03/hasu.png';//ハスの画像 } elseif($flower == 'bara'){ $args['url'] = 'https://cft-info.com/wp-content/uploads/2021/03/baraw.png';//バラの画像 } elseif($flower == 'kiku'){ $args['url'] = 'https://cft-info.com/wp-content/uploads/2021/03/kiku.png';//キクの画像 } elseif($flower == 'ran'){ $args['url'] = 'https://cft-info.com/wp-content/uploads/2021/03/ran.png';//スズランの画像 } elseif($flower == 'tulips'){ $args['url'] = 'https://cft-info.com/wp-content/uploads/2021/03/tulips.png';//チューリップの画像 } return $args; } else{ return $args; } } add_filter('get_avatar_data','new_get_avatar_data',10,2); //コメント欄に項目を追加 add_filter( 'comment_form_defaults','change_comment_form_flower'); function change_comment_form_flower($default) { $commenter = wp_get_current_commenter(); /*******メール入力欄の下に花選択を表示させる*****************************/ /* $default['fields']['email'] .= '<p class="comment-form-author">' .*/ /* $default['fields']['jyuu'] .= '<p class="comment-form-jyuu">' . */ $default['fields']['email'] .= '<p class="comment-form-email">' . '<label for="flower">'. __('お花を選んで下さい') .'</label> <input type="radio" id="flower" class="flower" name="flower" value="hasu"> <label for="hasu">  <img src="https://cft-info.com/wp-content/uploads/2021/03/hasu.png" alt="ハスの画像" width="100" height="100"     border="0"> </label> <input type="radio" id="flower" class="flower" name="flower" value="bara"> <label for="baraw">  <img src="https://cft-info.com/wp-content/uploads/2021/03/baraw.png" alt="バラの画像" width="100" hight="100"   border="0"> </label> <input type="radio" id="flower" class="flower" name="flower" value="kiku"> <label for="kiku">  <img src="https://cft-info.com/wp-content/uploads/2021/03/kiku.png" alt="キクの画像" width="100" height="100"     border="0"> </label> <input type="radio" id="flower" class="flower" name="flower" value="ran"> <label for="ran">  <img src="https://cft-info.com/wp-content/uploads/2021/03/ran.png" alt="ランの画像" width="100" height="100"     border="0"> </label> <input type="radio" id="flower" class="flower" name="flower" value="tulips"> <label for="tulips">  <img src="https://cft-info.com/wp-content/uploads/2021/03/tulips.png" alt="チューリップの画像" width="100" height="100" border="0"> </label> </p>'; return $default; } //ラジオボタンの情報をデータベースに追加する add_action( 'comment_post', 'save_comment_meta_data_flower' ); function save_comment_meta_data_flower( $comment_id ) { $flowers = explode(',', $_POST['flower']); foreach ($flowers as $flower) echo update_comment_meta( $comment_id, 'flower', $flower, true); } // // ステータス(フォーマット)に表示されるアバターのサイズを100x100ピクセルに変更20210407 add_filter( 'twentytwelve_status_avatar', 'my_twentytwelve_status_avatar' ); function my_twentytwelve_status_avatar(){ return 100; } // 作成者別(Author)アーカイブに表示されるアバターのサイズ // シングルページの投稿者情報(部分)に表示されるアバターのサイズ add_filter( 'twentytwelve_author_bio_avatar_size', 'my_twentytwelve_author_bio_avatar_size' ); function my_twentytwelve_author_bio_avatar_size(){ return 100; } ### 試したこと 固定ページのCSSで何とかしようとしましたがうまくいきませんでした。 初心者でfunction.phpもよくわからないまま、試行錯誤してます。 アバターのサイズも大きくしたのですがなりません。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

条件分岐タグ の「WordPressページ」の項目にあるように 現在どのページを表示しているのか判別可能ですので、条件分岐タグを使って判断することで、出しわけはできると思います。

投稿2021/04/20 08:33

CHERRY

総合スコア25171

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

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

nonkozo

2021/04/20 15:37

ありがとうございます。初心者で質問の要領が得なくて、すみません。補足ですが固定ページからボタンで別の固定ページ(コメントページ)飛ぶようになっています。このパターンのページが複数存在してます。 この先もこの組み合わせのページを増やしていく予定です。 とりあえず固定ページの条件分岐をやってみます
nonkozo

2021/04/21 02:51 編集

function.phpに条件分岐をしました タイトルで表示を分けようとしましたがエラーが出てしまいました。 // タイトルが「Mymessage」または「Mymememorialguestbook」の固定ページで行う処理を書く if ( is_page(array('Mymessage','Mymemorialguestbook')) ) { /*アバター選択制2021.03.28*/ //get_avatarの画像URLを書き換える           function new_get_avatar_data($args,$id_or_email){ ←エラー【syntax error, unexpected 'new_get_avatar_data' (T_STRING)】           $check_avatar =null;           $user = null;           $hash = null;           if($args['found_avatar'] == true){                 if ( ! empty( $id_or_email->user_id )){                $user = get_user_by( 'id', (int) $id_or_email->user_id );                $email = $user->user_email;                }                if ( ( ! $user || is_wp_error( $user ) ) && ! empty( $id_or_email->comment_author_email ) ) {                $email = $id_or_email->comment_author_email;                }                if(! empty($email)){                $hash = md5( strtolower( trim( $email ) ) );                }                $uri = 'http://www.gravatar.com/avatar/' . $hash . '?d=404';                $headers = @get_headers($uri);                if (preg_match("|200|", $headers[0])) {                $check_avatar = TRUE;                }                }           if(!empty($id_or_email)){           $flower = get_comment_meta($id_or_email->comment_ID);}           if(is_object($id_or_email) && isset( $id_or_email->user_id ) && empty($check_avatar) && !     empty($flower)){           $flower = $flower['flower'][0];                if($flower == 'hasu'){                $args['url'] = 'https://cft-info.com/wp-content/uploads/2021/03/hasu.png';//ハスの画像                }                elseif($flower == 'bara'){                $args['url'] = 'https://cft-info.com/wp-content/uploads/2021/03/baraw.png';//バラの画像                }                elseif($flower == 'kiku'){                $args['url'] = 'https://cft-info.com/wp-content/uploads/2021/03/kiku.png';//キクの画像                }                 elseif($flower == 'ran'){                $args['url'] = 'https://cft-info.com/wp-content/uploads/2021/03/ran.png';//スズランの画像                }                elseif($flower == 'tulips'){                $args['url'] = 'https://cft-info.com/wp-content/uploads/2021/03/tulips.png';//チューリップの画像                }                return $args;                }                else{                return $args;                }                }           add_filter('get_avatar_data','new_get_avatar_data',10,2); //コメント欄に項目を追加           add_filter( 'comment_form_defaults','change_comment_form_flower');           function change_comment_form_flower($default) {                $commenter = wp_get_current_commenter(); /*******メール入力欄の下に花選択を表示させる*****************************/ /* $default['fields']['email'] .= '<p class="comment-form-author">' .*/ /* $default['fields']['jyuu'] .= '<p class="comment-form-jyuu">' . */                $default['fields']['email'] .= '<p class="comment-form-email">' .                '<label for="flower">'. __('お花を選んで下さい') .'</label>                <input type="radio" id="flower" class="flower" name="flower" value="hasu">                <label for="hasu">                 <img src="https://cft-info.com/wp-content/uploads/2021/03/hasu.png" alt="ハスの画像" width="100" height="100"     border="0">                </label>                <input type="radio" id="flower" class="flower" name="flower" value="bara">                <label for="baraw">                 <img src="https://cft-info.com/wp-content/uploads/2021/03/baraw.png" alt="バラの画像" width="100" hight="100"   border="0">                </label>                <input type="radio" id="flower" class="flower" name="flower" value="kiku">                <label for="kiku">                 <img src="https://cft-info.com/wp-content/uploads/2021/03/kiku.png" alt="キクの画像" width="100" height="100"    border="0">                </label>                <input type="radio" id="flower" class="flower" name="flower" value="ran">                <label for="ran">                  <img src="https://cft-info.com/wp-content/uploads/2021/03/ran.png" alt="ランの画像" width="100" height="100"     border="0">                </label>                <input type="radio" id="flower" class="flower" name="flower" value="tulips">                <label for="tulips">                 <img src="https://cft-info.com/wp-content/uploads/2021/03/tulips.png" alt="チューリップの画像" width="100" height="100" border="0">                </label>                </p>';                return $default;                } //ラジオボタンの情報をデータベースに追加する           add_action( 'comment_post', 'save_comment_meta_data_flower' );           function save_comment_meta_data_flower( $comment_id ) {                $flowers = explode(',', $_POST['flower']);                foreach ($flowers as $flower)                echo update_comment_meta( $comment_id, 'flower', $flower, true);                } }                  if ( is_single('Mymemories') ) {} タイトルが「Mymemories」の個別ページで行う処理を書く
nonkozo

2021/04/21 03:32

ありがとうございました。レベルが変でした修正しました。。無事に分岐できてます。
nonkozo

2021/04/21 04:05

解決済にしましたがうまくいってませんでした・・・早とちりしました。 どの固定ページの場合も、ラジオボタンと画像が表示されません。 条件分岐できていないようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問