コメントの編集機能、nonceで作り直してプラグイン
Page No.2
これも大事な部分。
コメントが削除された時にeditkey も削除する関数とプラグインがアンインストールされた時にoption と保存してある全てのeditkey を削除する処理。
尚、プラグインがアンインストールされたときの静的な関数を使う処理はここのサイト【WordPressプラグインの仕組みとクラスを利用したより実践的な解説】からまる写しで学ばせていただきました。とても勉強になったありがたいサイトです。誠にありがとうございました。
※2019/12/5 追記
プラグインがアンインストールされた時に、オプション値を同時に削除する件において、上記のごとく静的な関数を使う手法を下記のように使っていたのですが、php が7となり、次のようなDeprecate が出るようになりました。
Deprecated: Non-static method Simplistic_Comment_User_Editable::at_uninstall() should not be called statically in /home/users/1/main.jp-strix/web/tns/wp-includes/class-wp-hook.php on line 288
いずれは廃止されてしまう手法のようなので、これはuninstall.php のファイルを使用する手法へと変更しました。ということで、下記の12~14行、23~26行は使用していません。実際は消してしまっています。
編集および削除ボタンが押されてページが再読み込みされた時の処理の分岐のための関数。
プラグインの動作を決めるメインの関数といえます。
押されたボタンによって処理を分岐させ、editkey での認証、分岐されたそれぞれの処理でのhtml の表示や実際のコメントの更新、削除という事になります。
尚、この関数はアクションフック wp にてフックして呼び出しています。アクションフック wp はWP のオブジェクトが全てセットされ、条件分岐タグが最初に使えるアクションフックです。
ちなみにコメントを削除するwp_delete_comment() は二つ目のパラメータにtrue を指定しなければ、ゴミ箱に移動させるだけです。管理者はゴミ箱を見ればどういった内容のコメントが削除されたのか確認することが出来ます。しかし、編集の方はもともとどういった内容だったのかは確認することができないので、元の内容と新しい内容を本文にしてメールして通知するようにしています。
あとまぁ、これはどうでもいいようなおまけな機能なのですが。
やはりメール入力が必須だとコメント送信の敷居が高くなるだろうなぁと思います。
かといってメールを必須ではなくし、メールボックスをなくしてしまっても、ということもあるので、ipアドレスからダミーなメールアドレスを作って入力するという機能です。
ここでちょっと迷ったのは、どこでコメントデータのemail アドレスを入れ込むかということです。いろいろやってみてフィルターフックpreprocess_comment が良さそうなので選択しました。このフックは wp-includes/comment.php のfunction wp_new_comment() のほぼ最初のところに記述してあります。
class Simplistic_Comment_User_Editable はここまでで終わり。
あとはこれだけ。
このプラグインのjavascript とスタイルシート。
javascript : splstc_comedit.js
スタイルシート : splstc_comedit_r.css
以上です。
実際のプラグイン内包のファイルもほぼこれと同じですが、少し違うのはoption の説明やらフォームのラベルやらが英語表記できるようにちょっと変えてあります。ただし、入れてある英語はただそれらしい雰囲気の単語を並べただけのでたらめなもの。後々、ちゃんと直すつもりです。
とりあえずローカルな環境のWordPress とさくらにあるものとロリポップ(このサイト)にあるWordPress でテストしましたが問題無く動いています。
問題無く動くと思うんですけど。動かなかったらご勘弁ください。
何も起こりえないのですが、一応、決まり事を。
このプラグインを使用する場合は完全自己責任で行ってください。
何らかの損害が発生しても一切関知しません。
下のリンクからダウンロードできると思います。
※2019/12/5 にちょっと手を入れてversion1.1としています。
wordpress5.3 、PHP7.3 で確認済です。
※2021/7/21 現在、プラグインリニューアルアップデート中!
Post : 2015/12/16 11:16