- ベストアンサー
WordPressの質問(q10279843)の続
カラム名 question を text にしたい場合下記コードを変更しても良いでしょうか? bbs_quest_input.php の101行目 name="question" bbs_quest_input.php の214行目 var question_value = ""; bbs_quest_input.php の335行目 if (!['name', 'title', 'question'].includes(e.target.id)) return; bbs_quest_input.php の364行目 question_value = ""; bbs_quest_input.php の390行目 question_value = json.question; ※最新コード https://wandbox.org/permlink/PjhrH75IR9jUMnpL
- みんなの回答 (42)
- 専門家の回答
質問者が選んだベストアンサー
・ファイルを右クリックしたときに有効になる設定を作成することが出来るという記事を見つけて試しておりました。 そうでしたか。 ポータブルモードで使う必要はないと思いますので、 通常でインストールしてください。 回答No.41の添付画像のように、 コンテキストメニューに追加するよう、 チェックボックスをオンにしていただければいいと思います。
その他の回答 (41)
- dell_OK
- ベストアンサー率13% (766/5720)
・if分岐でアイコン画像が無いなら、ダミー画像を表示するというコードは下記であってますでしょうか? そこだけ書くと、こんな感じにになると思います。 <?php $upload_dir = wp_upload_dir(); $attach_dir = $upload_dir['basedir'].'/attach/'; if (empty($row->usericon)) { $usericon_src = 'wp-content/themes/sample_theme/images/noimage.png'; } else { $usericon_src = $attach_dir.$row->usericon; } ?> <img src="<?php echo $usericon_src; ?>"> srcに入れるものが変わるだけでいいと思うのでそれを設定する感じです。
補足
修正ありがとうございます。用意しておいたアイコン画像を分岐に使うのですね勉強になりました。 echo '<div>'.' 略 '</div>'; の形で表示させたいのですが、<img src="<?php echo $usericon_src; ?>"> はどのように変化させるべきでしょうか? ※考えたコード echo '<div>'.'<img src="<?php echo $usericon_src; ?>">'.'</div>';
- dell_OK
- ベストアンサー率13% (766/5720)
・if文 で間隔を調節する方法のみ頭に浮かんだのですが そうですね。 ifでcarousel-areaの高さを0にするか非表示にするかですね。
補足
回答ありがとうございます、初めは PHP でコードを考えてみたのですが、データベースから動画が投稿されているか調べる必要がある為、global $wpdb; で接続して調べる必要があり、もっと簡単な方法があるのではないかと思い辞めました。 次に carousel-area の高さを要素がない時は0にする方法を考えました。 こちらは以前 dell_ok さんから要素数ごとにスライドの横幅は先に求めておいた方が合理的というアドバイスを頂いた際に下記のコードを書かないようにした為、再度ifでcarousel-areaの高さを0にする目的にのみ書くのは良くないのではないかと考え別の方法に致しました。 if (totalSlides == 1) { ~ } else if (totalSlides == 2) { ~ ※回答No.10の回答から参考 https://okwave.jp/qa/q10279843_2.html#answers_contents 最終的に動画がない場合は非表示にするという方法で決めました。 要素数を示す totalSlides が0の場合、const slide = document.getElementById('carousel'); カルーセルクラスの削除を行う。 こちらの方法で問題はありますでしょうか?アドバイスよろしくお願い致します。 if (totalSlides < 0) { elm.classList.remove("slide"); }
- dell_OK
- ベストアンサー率13% (766/5720)
・質問画面でコメントの下に表示されていた入力可能な残り文字数が消えてしまったのですが まだquestionのままのところがあるのでtextにしてみてください。 <textarea class="input" name="text" id="question"
補足
回答ありがとうございます、修正したところ表示することが出来ました。 https://www.irasuto.cfbx.jp/%e8%b3%aa%e5%95%8f%e6%8e%b2%e7%a4%ba%e6%9d%bf/
- dell_OK
- ベストアンサー率13% (766/5720)
NOT NULL 制約をなくしてテーブルを作り直されましたか。
お礼
こちらが最新の回答になります。 質問画面、質問一覧表示画面で分からないところが1つずつあり、回答画面での質問表示、デザインについてもお聞きしたいです。 質問画面でコメントの下に表示されていた入力可能な残り文字数が消えてしまったのですが functions.php を見ても原因が分かりません… question から text に変えた影響だと思われます、修正すべき箇所はありますでしょうか? ※最新コード https://wandbox.org/permlink/QQ1ofp4o1zNmaiy7 ※質問画面 https://www.irasuto.cfbx.jp/%e8%b3%aa%e5%95%8f%e6%8e%b2%e7%a4%ba%e6%9d%bf/ 質問一覧表示画面で動画付きの質問が投稿されていなかった場合スペースが空いてしまいます、 if文 で間隔を調節する方法のみ頭に浮かんだのですが、dell_ok さんであればどのような方法を考えますでしょうか? ※質問一覧表示画面 https://www.irasuto.cfbx.jp/%e9%9b%91%e8%ab%87%e6%8e%b2%e7%a4%ba%e6%9d%bf%e3%80%80%e8%b3%aa%e5%95%8f%e4%b8%80%e8%a6%a7%e8%a1%a8%e7%a4%ba%e7%94%bb%e9%9d%a2/ 回答画面での質問表示についてお聞きしたいのですが、アイコン画像がアップロードされなかった際にダミー画像を表示したいです。 if分岐でアイコン画像が無いなら、ダミー画像を表示するというコードは下記であってますでしょうか? if( empty( $row->usericon ) ){ $first_img = '<img class="attachment_post_thumbnail" src="wp-content/themes/sample_theme/images/noimage.png" alt="No image" />'; } else { return $row->usericon; } echo '<div>' . $row->usericon . '</div>'; //アイコン画像 ※参考サイト https://oku-log.com/blog/post-thumbnails/ 回答画面のデザインについて質問画面のように回答機能で HTMLの書き換えを行った場合に負荷がかかってしまうのではないかと思い確認画面を設けるべきか悩んでおります。 アドバイスお願い致します。
補足
アドバイスありがとうございます、コードを作ることばかり考えていてテーブルの事を忘れておりました申し訳ありません… NOT NULL 制約からDEFAULT NULL制約に変更したところ完了画面まで行くことが出来ました。 ※質問掲示板 https://www.irasuto.cfbx.jp/%e8%b3%aa%e5%95%8f%e6%8e%b2%e7%a4%ba%e6%9d%bf/
- dell_OK
- ベストアンサー率13% (766/5720)
・残り文字数は question から TEXT に変更したことが原因だと思い確認してみたのですが原因が分かりませんでした… 回答No.2でもう2か所textにするところがあるとお伝えしました。 そこを修正してみてください。
補足
回答ありがとうございます、申し訳ありません過去の修正を加えたものでないコードを使用しておりました… 修正したところボタンが表示されたのですが、アラートに登録できませんでしたと表示されております。 エラー文を取得するためにはどうすれば良いでしょうか? アラートでエラー表示する方法を調べたのですが分からず困っております。 ※アラートでエラー表示する方法 https://tech.kurojica.com/archives/38740/
- dell_OK
- ベストアンサー率13% (766/5720)
・質問画面のコードを修正するか回答画面を作るどちらを優先すべきでしょうか? 質問画面のコードでエラーにならないかの確認が先ですね。 修正しなくてもいいかも知れませんし。 ちょっと気になるのは、ここですね。 parent_id bigint(20) NOT NULL, 質問は親がいない(parent_idがNULL)ため、 NOT NULL制約があると登録で失敗しそうです。
補足
アドバイスありがとうございます、parent_id は NOT NULL を設定しないという形に変更しました。 質問画面で確認したところ質問文(question)での入力可能な残り文字数が出てこず、確認画面へ進んだ際に入力画面へ戻るボタンと結果画面へ進むボタンが表示されておりません。 残り文字数は question から TEXT に変更したことが原因だと思い確認してみたのですが原因が分かりませんでした… ボタンが機能しない原因が分からず悩んでおります、今回のようにエラー文を後から確認したい場合どこからチェックすべきでしょうか? アドバイスよろしくお願い致します。 ※質問掲示板 https://www.irasuto.cfbx.jp/%e8%b3%aa%e5%95%8f%e6%8e%b2%e7%a4%ba%e6%9d%bf/ ※該当コード https://wandbox.org/permlink/cXuoACceuMeAvvGi
- dell_OK
- ベストアンサー率13% (766/5720)
・間違っている点などありますでしょうか? まずは実行してみてください。 エラーはわかる範囲でなおしてみてください。
補足
回答ありがとうございます、自分でまず試すべきでした申し訳ありません。 修正したところテーブルを作成できました、両用テーブル構成で足りないカラムなどありますでしょうか? 先にお聞きしたいのですが、質問画面のコードを修正するか回答画面を作るどちらを優先すべきでしょうか? ※テーブル構成 https://imgur.com/a/51RFPMS.png ※実行したSQL CREATE TABLE sortable ( id bigint(20) AUTO_INCREMENT PRIMARY KEY, parent_id bigint(20) NOT NULL, ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP, text varchar(500) NOT NULL, title varchar(255) NOT NULL, name varchar(255) NOT NULL, stamp INT (11) NOT NULL, unique_id varchar(36) NOT NULL UNIQUE KEY default uuid(), ip varchar(39) NOT NULL, attach1 varchar(255) NOT NULL, attach2 varchar(255) NOT NULL, attach3 varchar(255) NOT NULL, usericon varchar(255) NOT NULL, FOREIGN KEY (parent_id) REFERENCES sortable(id) ); WITH RECURSIVE threads AS ( SELECT id, parent_id, ts, text, title, name, stamp, unique_id, ip, attach1, attach2, attach3, usericon, id AS top_id, CAST(id AS CHAR(255)) AS path, /* 1つのデータ型を互換性のある別のデータ型に変換 */ 0 AS depth /* 深さが0 = 親(質問)を取得する */ FROM sortable WHERE parent_id IS NULL UNION ALL SELECT s.id, s.parent_id, s.ts, s.text, s.title, s.name, s.stamp, s.unique_id, s.ip, s.attach1, s.attach2, s.attach3, s.usericon, t.top_id, CONCAT(t.path, '-', s.id) AS path, t.depth + 1 AS depth /* ひたすらに1を+していく */ FROM sortable s /* SELECT * FROM テーブル名 */ INNER JOIN threads t ON s.parent_id = t.id ) SELECT * FROM threads ORDER BY top_id DESC, path
- dell_OK
- ベストアンサー率13% (766/5720)
・➀カラム名を大文字にした方が良いものはありますでしょうか?小文字で統一すべきか悩んでおります… そうですね。 こう見ると小文字で統一しておいた方がいいですね。 ついでに言うと、selectやtextのようなMySQLのキーワードや予約語は使わない方がいいと思います。 https://dev.mysql.com/doc/refman/8.0/ja/keywords.html 例えば、selectカラムを取得するSQL文はこうです。 SELECT select FROM sotable これはエラーになります。 selectはデータ取得の命令なのでそれを重複して書いているようなものです。 カラム名であることを明示するには ` で括る必要があります。 SELECT `select` FROM sotable SQL文を書くときに必要に応じてまたはすべてのカラム名を ` で括るのは面倒だと思います。 不思議なことにtextはそのままでも問題ないようです。 SELECT text FROM sotable とは言っても、selectカラムは今のところ使用していないような気がするのでなくてもいいのではないでしょうか。 stampカラムになる前の残骸かも知れないですね。 textも、本当はその名前に変えた時に言うべきでしたが、今からまたプログラムのtextのところを直すのも手間ですし、そのままでも使えそうなので今はそのままにしておきましょうかね。 今後は、キーワードや予約語には気を付けていただければと思います。 ➁回答No.7でアドバイス頂いた ko を mago として使うコードは今回必要ないでしょうか? 必要ありません。 ➂INSERT INTO~というコードはテーブル構成を確認するためのものでしょうか? そうです。 CREATEもINSERTも再帰的な抽出を教えてくださった方のサンプルです。 質問者さまのサイトには必要ありません。
補足
Q.こう見ると小文字で統一しておいた方がいいですね。 A.回答ありがとうございます、小文字で統一してみます。 Q.ついでに言うと、selectやtextのようなMySQLのキーワードや予約語は使わない方がいいと思います。 https://dev.mysql.com/doc/refman/8.0/ja/keywords.html 例えば、selectカラムを取得するSQL文はこうです。 SELECT select FROM sotable これはエラーになります。 A.回答ありがとうございます、カラム名とMySQLのキーワードや予約語が被るのは考慮しておりませんでした… 気を付けたほうが良さそうですね。 Q.とは言っても、selectカラムは今のところ使用していないような気がするのでなくてもいいのではないでしょうか。 stampカラムになる前の残骸かも知れないですね。 textも、本当はその名前に変えた時に言うべきでしたが、今からまたプログラムのtextのところを直すのも手間ですし、そのままでも使えそうなので今はそのままにしておきましょうかね。 今後は、キーワードや予約語には気を付けていただければと思います。 A.回答ありがとうございます、ひとまずそのままカラム名として使っておきます。 Q.➁回答No.7でアドバイス頂いた ko を mago として使うコードは今回必要ないでしょうか? 必要ありません。 ➂INSERT INTO~というコードはテーブル構成を確認するためのものでしょうか? そうです。 CREATEもINSERTも再帰的な抽出を教えてくださった方のサンプルです。 質問者さまのサイトには必要ありません。 A.回答ありがとうございます、dell_ok さんから頂いたアドバイスを元にコードを書いてみました、間違っている点などありますでしょうか? ※質問回答両用テーブル CREATE TABLE sortable ( id bigint(20) INT AUTO_INCREMENT PRIMARY KEY, parent_id bigint(20) NOT NULL, ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP, text varchar(500) NOT NULL, title varchar(255) NOT NULL, name varchar(255) NOT NULL, stamp INT (11) NOT NULL, select INT (11) NOT NULL, unique_id varchar(36) NOT NULL uuid() UNIQUE KEY, ip varchar(39) NOT NULL, attach1 varchar(255) NOT NULL, attach2 varchar(255) NOT NULL, attach3 varchar(255) NOT NULL, usericon varchar(255) NOT NULL, FOREIGN KEY (parent_id) REFERENCES sortable(id) ); WITH RECURSIVE threads AS ( SELECT id, parent_id, ts, text, title, name, stamp, select, unique_id, ip, attach1, attach2, attach3, usericon, id AS top_id, CAST(id AS CHAR(255)) AS path, /* 1つのデータ型を互換性のある別のデータ型に変換 */ 0 AS depth /* 深さが0 = 親(質問)を取得する */ FROM sortable WHERE parent_id IS NULL UNION ALL SELECT s.id, s.parent_id, s.ts, s.text, s.title, s.name, s.stamp, s.select, s.unique_id, s.ip, s.attach1, s.attach2, s.attach3, s.usericon, t.top_id, CONCAT(t.path, '-', s.id) AS path, t.depth + 1 AS depth /* ひたすらに1を+していく */ FROM sortable s /* SELECT * FROM テーブル名 */ INNER JOIN threads t ON s.parent_id = t.id ) SELECT * FROM threads ORDER BY top_id DESC, path
- dell_OK
- ベストアンサー率13% (766/5720)
・考え方として messages はどのような立ち位置になるのでしょうか…? 親子の関係前提でその方向から説明したため親とか子とかと意識させてしまったのかも知れませんね。 messagesは自分と考えてくださればいいと思います。 自分には親がいないのかいるのか。 いないなら自分は最初の人だ。 いるなら自分は子であり親は誰なのか。 その誰もまた当人からすれば自分になります。 messagesはそれが主となるテーブルで、その1レコードずつが自分と言う主人公のようなものです。 ・親(回答)+1した数字が子(返信)という認識でした、必ずしもそうならないという解釈で合ってますでしょうか? 深さのことでしたら必ずそうなります。
補足
Q.messagesは自分と考えてくださればいいと思います。 自分には親がいないのかいるのか。 いないなら自分は最初の人だ。 いるなら自分は子であり親は誰なのか。 その誰もまた当人からすれば自分になります。 messagesはそれが主となるテーブルで、その1レコードずつが自分と言う主人公のようなものです。 A.解説ありがとうございます、難しいですね… 質問&回答の両用テーブルで SQL を自分で書いてみたのですが自信がありません… 修正よろしくお願い致します。 複数分からないところがあり教えて頂きたいです。 ➀カラム名を大文字にした方が良いものはありますでしょうか?小文字で統一すべきか悩んでおります… ➁回答No.7でアドバイス頂いた ko を mago として使うコードは今回必要ないでしょうか?最新の回答では UNION ALL で完結しているため不必要だと思っております。 ➂INSERT INTO~というコードはテーブル構成を確認するためのものでしょうか? ※質問回答両用テーブル CREATE TABLE sortable ( ID bigint(20) INT AUTO_INCREMENT PRIMARY KEY, parent_id bigint(20) NOT NULL, TS TIMESTAMP DEFAULT CURRENT_TIMESTAMP, TEXT varchar(500) NOT NULL, title varchar(255) NOT NULL, name varchar(255) NOT NULL, stamp INT (11) NOT NULL, select INT (11) NOT NULL, unique_id varchar(36) NOT NULL uuid() UNIQUE KEY, ip varchar(39) NOT NULL, attach1 varchar(255) NOT NULL, attach2 varchar(255) NOT NULL, attach3 varchar(255) NOT NULL, usericon varchar(255) NOT NULL, FOREIGN KEY (parent_id) REFERENCES sortable(id) ); WITH RECURSIVE threads AS ( SELECT ID, parent_id, TS, TEXT, title, name, stamp, select, unique_id, ip, attach1, attach2, attach3, usericon, id AS top_id, CAST(id AS CHAR(255)) AS path, /* 1つのデータ型を互換性のある別のデータ型に変換 */ 0 AS depth /* 深さが0 = 親(質問)を取得する */ FROM sortable WHERE parent_id IS NULL UNION ALL SELECT s.ID, s.parent_id, s.TS, s.TEXT, s.title, s.name, s.stamp, s.select, s.unique_id, s.ip, s.attach1, s.attach2, s.attach3, s.usericon, t.top_id, CONCAT(t.path, '-', s.ID) AS path, t.depth + 1 AS depth /* ひたすらに1を+していく */ FROM sortable s /* SELECT * FROM テーブル名 */ INNER JOIN threads t ON s.parent_id = t.ID ) SELECT * FROM threads ORDER BY top_id DESC, path
- dell_OK
- ベストアンサー率13% (766/5720)
・t.top_id 親のID についてお聞きしたいのですが、何故 threads テーブルで id AS top_id,としたか分かりますでしょうか? そのまま id, と使えるのではないかと思いました。 私が「t.top_id 親のID」と書いたのがよくなかったですね。 正確には「t.top_id 親のtop_id」です。 SQLを実行したらわかると思いますが、おおもとの親(質問)のIDになります。 top の言葉通りトップ(先頭)を示すものだと思うといいでしょう。 どのような仕組みで実現しているかですが。 先日言ったように、子からは直近の親しかわかりませんので、先々代以前のことを直接知ることはできません。 そのため、代々受け継いで渡していくという方法をとっています。 top_id が発生しているのはどこでしょうか。 t.top_idはthreadsのtop_idなのでそれ自身が持っているものではありません。 UNIONより上の id AS top_id, です。 あきらかに messages の id を top_id として名づけています。 つまりトップのIDがこれです。 一方、threadsのtop_idとは何かというと。 UNIONより下にあるthreads(自分(messages)からみた親)のtop_idか、 UNIONより上にあるtop_idと名付けたmessagesのidです。 ずっとずっと先祖のthreadsをたどっていくといつかかならず、この後者にたどり着きます。 反対から見れば、ずっとずっと子孫にトップのIDを受け継いでいることになります。
補足
Q.一方、threadsのtop_idとは何かというと。 UNIONより下にあるthreads(自分(messages)からみた親)のtop_idか、 UNIONより上にあるtop_idと名付けたmessagesのidです。 ずっとずっと先祖のthreadsをたどっていくといつかかならず、この後者にたどり着きます。 反対から見れば、ずっとずっと子孫にトップのIDを受け継いでいることになります。 A.解説ありがとうございます、難しいのですが何となく理解することが出来ました。 CREATE TABLE messages で質問に必要なカラムを追加して、回答に必要なカラムを WITH で返信に必要なカラムを UNION ALL で追加するようなイメージで考えております。
お礼
回答ありがとうございます、返事が遅れてしまい申し訳ありません。 1つ問題がありまして、通常でインストールした場合ファイルやフォルダの中のソースファイルを開くことが出来ません。 フォルダやファイルから開く必要はないのでしょうか? 質問の期限が切れてしまったので下記リンクからアドバイス宜しくお願い致します。 ※新しい質問 https://okwave.jp/qa/q10297398.html