WP DS FAQの1.3.3(2011/08/19に新バージョンが出た)をベースに、セキュリティ強化(CSRF対策やSQL Injection強化等)と利便性向上を目的に作成中。まだいろいろ課題はあるにせよ、とりあえず使えそうなので公開。問題があったらご指摘ください。
ログイン後の左サイドメニューの「設定」→「FAQの設定」(初期値:管理者の閲覧・変更可)。編集者であれば、左サイドメニューの「FAQ」から「管理設定」のリンクをたどって設定をみることは出来ます(閲覧専用・変更不可)。
管理権限は、FAQに関するすべての権限を持ちます。初期値はプラグイン管理者(level_8)です。編集権限は、FAQに関する編集のみの権限を持ちます(カテゴリー内の質問投稿・編集・削除のみ)。初期値は、編集者(level_7)です。細かい設定についてはイメージには載せていませんが、説明文がありますので御覧ください。
ショートコードについては、1.0.13(2011.09.14)より管理画面の冒頭に表示することにしました。複雑化したためです
編集画面からも「管理設定」にいけます。こちらについては先程の管理画面で編集権限を持つユーザも管理画面を見ることが可能になります
先ほどの管理画面の「安全措置」ですべての「削除」機能を無効にしています。またソートを追加しています。WP DS FAQでは、ソートキー「カスタム」、ソート順「昇順」になっています。カスタムの場合のみ、、質問リストの上下矢印で表示位置を任意の場所に移動できます。
WS DS FAQ |
![]() |
---|---|
WS DS FAQ Plus |
![]() |
■変更点 [1.0.0] - SQLインジェクション対策の強化 - 引用符問題('や"をいれると\'や\"のようにエスケープされてしまう) - ソースコードの表示 -- WP Syntaxプラグインは使えることを確認 - 日本語翻訳 -- エラー表示をロシア語から英語に変更 [1.0.1]: 2011.03.18 - 「質問の削除」ボタンは、一番右へ - 「最終更新日」を「編集」ボタンの右側に(投稿画面) - 「最終更新日」でソート - 「タイトルの先頭に()」があれば、タイトル右にカテゴリー名を表記(カッコは全角半角どちらでもいい) -- smallタグを使って小さめに表示 - 「カテゴリー名」が存在した場合、その中に「-」があると改行(br)を付ける - 全体的にtdタグのサイズを微調整 [1.0.2]: 2011.03.19 - SSL対応(管理画面をSSL化したときのAjaxトラブルを解決) [1.0.3]: 2011.04.01 - FAQ表示画面での「削除」リンクの削除 - メインメニューへのメニュー追加(多言語対応) [1.0.4]: 2011.04.07 - CSRF対策を施した [1.0.5]: 2011.04.22 - FORCE_SSL_ADMIN(管理画面をSSL化)を指定したとき、その値がtrue以外でも処理されてしまう問題を修正 [1.0.6]: 2011.04.23 - メインメニューに追加したメニューのサブメニューにカテゴリーを表示 ※クリックして選択したサブメニューのハイライトがうまくいきません [1.0.7]: 2011.07.01 - 質問内容がなければ、「作成中」と表示されるようにした(英語はUnder Construction.) [1.0.8]: 2011.07.11 - 作成中について、divタグのclass="dsfaq_plus_under_construction" で括った [1.0.9]: 2011.07.19 - FAQの個別ソート機能を追加(「ソートキー」「ソート順」を追加) ソートキー:カスタム(WP DS FAQの標準で質問名の↓↑位置変更可能)、最終更新日、質問名 ソート順:昇順、降順 --(バグ)「表示」「ソートキー」「ソート順」の2つ以上連続して変更すると、 最後の変更しか反映されない ※Ajax周りは難しくて、現状では変更するたびにブラウザをリロードして確認してください。 2つ以上変更してもシステムへの影響はありません。単純に最後の変更しか反映されないだけ です。 --(未対応)「降順」を選択すると、「ソートキーのカスタム」選択の挙動がおかしくなる ※昇順を前提として作成されているので、まだこの段階では未修正です。 ※降順でカスタムしたければ、一旦昇順に変更してカスタム設定してから降順を選択してください。 -(互換問題)新機能(ソート)を設定すると、「1.0.8以下に戻した場合」あるいは 「WP DS FAQプラグイン」に戻したときに、その部分のFAQが表示されなくなります。 その場合、設定から該当の「表示」部分の選択をし直してください。 ※今回の変更でデータが失われることはありません。新しい機能を加えるために多くの変更が 必要であるため、主にAjax周りで対応ができていない部分があるだけです。 従ってバージョンダウンしても若干表示部分での再設定は必要な部分もありますが、 影響は軽微だと思います。 [1.0.10]: 2011.08.22 - WP DS FAQ 1.3.3が出たことで、変更点について必要な項目を修正 --(対応の必要無し)エスケープ処理修正 --(対応)いくつかの数字データのチェック機能強化 -(修正)ログイン時のFAQ表示ページにおいて、「編集」→「キャンセル」を押した後に「質問の削除」が 表示されていしまう問題を修正(管理画面以外での削除を禁止するという1.0.3のポリシーに準拠) -(修正)管理画面のFAQサブメニューについて、「名前」順でソートするように変更 [1.0.11]: 2011.08.26 - 環境設定の新設(サイドメニューの「設定」より「FAQの設定」にアクセス -- 一般設定(タイトルの表示) -- 権限の設定(従来は管理者のみだったが、変更可能。) -- 安全措置の設定(削除機能のON/OFF) -- 他プラグイン連携(WP-PostRatingとの連携) -- ヘッダとカスケード設定もこちらに移設 [1.0.11-1]: 2011.08.26 - (修正)環境設定の「一般設定」のタイトル表示について反映されてなかった問題を修正 [1.0.12]: 2011.08.29 - (修正)いくつかのセキュリティ修正 - WP DS FAQプラグインとの完全互換するよう修正 -- 1.0.9から「ソート項目」を追加したため、完全な互換は失われていました。これを解決。 -- ソートに関する設定項目を新設(dsfaq_nameのcustom_mode) -- 従来のモード(dsfaq_nameのmode)と連動するようにし、WP DS FAQとWP DS FAQ Plusの行き来 をしてもデータが失われず、そのまま引き継がれるように調整 -- ※もちろんWP DS FAQとWP DS FAQ Plusは同時に動作しません。必ず一方を「停止」してから もう一方を「有効」にしてください。 [1.0.12-1]: 2011.08.30 - (修正)カテゴリー追加が出来なくなっていた問題を修正 [1.0.13]: 2011.09.14(大規模変更) -(修正)いくつかのセキュリティ問題を修正(脆弱性の修正というより、いくつか多重チェック項目を追加) -(改善)カテゴリータイトル表示の改善 -- FAQ設定の「FAQカテゴリ名の接頭文字」「FAQカテゴリ名の接尾文字」で変更可能にした -(改善)タイムゾーン処理の修正と強化(convet_timezone_data関数の新設) -- 1.0.1において暫定的にタイムゾーンを日本語に固定していた問題を修正 本バージョンから後述する「最新リスト表示」を利用するため、タイムゾーンの本格的な利用 が必要になったため。1.0.12-1までは影響は軽微だった -- 「設定」→「タイムゾーン」に準拠するようにした -- (特記事項)UTC+9等 date_i18n関数が対応していないマニュアルオフセットにも対応。 ※PHP5.2以降は独自チェックを、5.1以下はdate_i18n関数があれば利用し、 なければタイムゾーンは無視(UTC時間)が使われる --(改善)質問管理画面の各質問の最終更新日に「タイムゾーン」を付与しました --(修正)最初のカテゴリーが、FAQサブメニューに表示されない問題を解決 -(追加)最新更新リスト表示機能 -- [dsfaq latest="10" latest_format="li/dl/table"]のオプションを追加 -- いずれも新設した「wp-ds-faq-plus.css」でデザイン・レイアウトを変更可能にした -- ※ その他細かい設定方法は、「設定」→「FAQの設定」に記載しました [1.0.14]: 2011.09.22 -(修正)FAQ表示画面からの編集時に、保存、キャンセルを選択すると「Ajaxエラー」が表示されていた 問題を解決(なお表示されても正しく処理はされていました) -(改善)最新リスト表示のうち「table」フォーマットについて、各項目のタイトル表示をするように変更 [1.0.15]: 2012.12.11 -(修正)Copyright情報の訂正 [1.0.16]: 2013.01.10 -(修正)環境設定画面にて「ヘッダとカスケード(CSS)」設定の保存や復元ができなくなっていた件を修正 [1.0.17]: 2013.01.10 -(修正)PHP5.2を利用していた場合、「Call to undefined method DateTime::setTimestamp()」とエラーがでる問題を修正 ■今後の課題(目標) - 設定のインポートとエクスポート - 編集ボタンのバグ AとBの編集ボタンを押して、Aを直して編集したら、Aの中身がBで上書きされてしまう Javascriptで編集ボタンが押されていることを判断。保存ボタンが押されるまでロックするような処理が必要か - 削除確認がない(恐ろしい) 質問やFAQの削除は、削除ボタンを押した瞬間、対象質問が消えます。 少なくても「確認」画面は出すべき。 さらにいえば、削除表示、非表示チェックボックスを設けて、普段は非表示にしておくのが無難だと思う (あるいはボタンに対してdisable属性をつけとくといいか) -- 1.0.11で環境設定を新設することで暫定解決 - サブメニューに追加したカテゴリー表示の多言語化
add_menu_page(__('DS FAQ Plus ', 'wp-ds-faq'), __('DS FAQ Plus', 'wp-ds-faq'), 10, __FILE__, 'options_page' ); foreach ($select as $s) add_submenu_page(__FILE__, $s['name_faq'], $s['name_faq'], 10, __FILE__.'&add_sub_id='.$s['id'], 'options_page');がメイン部分になります。
function options_page(){ if(isset($_GET['add_sub_id'])){ // add_sub_idのみの処理 echo $this->get_faq_book(false, htmlspecialchars($_GET['add_sub_id'])); }else{ // 従来の処理 } }そう、このFAQプラグインはget_faq_bookでFAQカテゴリーの表示を制御させることが可能。そうでないのなら、制御できるように書き換える必要があるでしょう。