コメントに投稿者用、再編集機能をつける

Edit Comments”は、コメントに再編集機能をつけるプラグインです。自分が投稿したコメントのみ編集用リンクが表示され、再編集できるようになります。動作デモはこの投稿のコメント欄をお使いください。(適当にコメントをしていただいてOK)

コメントを再編集できるようにするには条件があります。コメントに記録されたIPアドレスと現在のIPアドレスが同じであること、タイムゾーンが同じであること(?)です。デフォルトではコメント投稿後30分を過ぎると、そのコメントは管理人いがい編集できなくなります。このタイムリミットはプラグインファイルを編集すれば簡単に変更できるので、好みに合わせましょう。

Edit Commentsのインストール方法

Edit Commentsのインストールは少し複雑です。ですが、ポイントを押さえれば問題なく動くようになります。

まずjal-edit-comments.phpをプラグインフォルダへアップロードし、管理画面 -> プラグインからEdit-Commentsを有効化してください。

comments.phpの編集方法

ここから先は少し複雑になります。テーマのフォルダにあるcomments.phpを編集します。問題が起きてしまった場合に備えて、元のcomments.phpをcomments-backup.phpという名前に変更し保存しましょう。ファイルは./wp-content/themes/テーマ名/にあります。

もしWordPressデフォルトのKubrickというテーマを使っている場合は、プラグイン付属のcomments.phpが使えます。そのままテーマフォルダにアップロードしましょう。Kubrickがベースになっているテーマも、付属のものが使えるかもしれません。付属のもので問題なく動けば、以下の行程は必要ありません。

Step.1 コメントの再編集用リンクをつける

再編集用のリンクのコードは<?php jal_edit_comment_link(); ?>です。これをループ内におくことで各コメントに編集用リンクがつきます。

<?php foreach ($comments as $comment) : ?>
// この上下のコード間に、編集用リンクを設置
<?php endforeach; /* end for each comment */ ?>

テーマに元々ついている<?php edit_comment_link(); ?>と入れ替えればOKでしょう。

Step.2 if文の削除と変更

<?php if ( $user_ID ) : ?>というコードを見つけてください。このコードを消して以下のコードを挿入します。

<?php
  if ( isset($_GET['jal_edit_comments']) ) :
   $jal_comment = jal_edit_comment_init();
   if (!$jal_comment) : return; endif;
?>

<?php elseif ( $user_ID ) : ?>

Step.3 テキストエリアにコードを挿入

続いてコメントフォーム用の<textarea>を編集します。元のコードを削除し、以下のコードを挿入してください。

<textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"><?php jal_comment_content($jal_comment); ?></textarea>

Step.4 再編集中メッセージを表示させる

<h3 id="respond">Leave a Reply</h3>を削除し、以下のコードと入れ替えてください。

<h3 id="respond"><?php echo (isset($_GET['jal_edit_comments'])) ? "Edit your Comment" : "Leave a Reply"; ?></h3>

Step.5 ファイルのアップロードおよびコメントテスト

以上で編集作業は終わりです。テーマフォルダに編集したcomments.phpをアップロードしてください。ログアウトした状態でコメントを投稿してみて、再編集リンクが表示されればOKです。お疲れ様でした。

TrackBack URIhttp://bd.dotted.jp/archives/67/trackback/

49 Comments

  1. no.1 Kaira Says:
  2. このプラグインの問題は、同じIPなら違うパソコンでも再編集できてしまうところです。セッションかクッキーで管理すれば良いのかもしれませんが、時間制限がついているし良いかなと思っています :s

  3. no.2 yutaka Says:
  4. kairaさんこんばんわ〜
    なになに、自分のコメントを自分で修正したり編集したりする事ができるんですか?凄いですね :)

    ★今編集してます :s すばらしい〜〜 コメントして誤字脱字に気がつく事ってありますからね、便利ですね

  5. no.3 M's Says:
  6. こんにちは。わたしもテストさせてください。
    修正してみました。
    風邪が治ったらトライしてみたいです。

  7. no.4 yutaka Says:
  8. :x お〜、何故かトラックバックが飛んでいない。設置してみました。kairaさんありがとう〜

  9. no.5 Kaira Says:
  10. yutakaさん。
    無事設置できましたか。よかったよかった 8)
    トラックバックも2.0.1へのVer.UPで解決したようですねー。

    M'sさん。
    風邪を早く治して導入してみてくださいな :)
    説明のわかりにくいところなどがありましたら、教えてくださいね~。

  11. no.6 M's Says:
  12. こんばんは。導入してみました。
    私はTHEMEはclassicを使っているのですが、
    Step.4 の
    Leave a Replyがなく、
    #postcomment title= のくくりにあって
    ちょっと迷ったのですが、そこを入れ替えたら動いて
    くれました。これで投稿者も安心ですね。 :)

  13. no.7 Kaira Says:
  14. Step.4は編集中のメッセージを出すだけなので、無くてもかまいません。
    M'sさんのところなら、
    <h2 id="postcomment"><?php echo (isset($_GET['jal_edit_comments'])) ? "コメントを編集中" : "コメントをどうぞ"; ?></h2>
    という風にすればOKです ;)

  15. no.8 hoge Says:
  16. 試させてください~。
    いいですね~ :lol:

  17. no.9 とっぴー Says:
  18. テストさせてください

    すぎ

  19. no.10 tanaka Says:
  20. このプラグインすごーい。感動した ;(

  21. no.11 ばえ Says:
  22. テストさせてください!

    出来ました!
    ありがとうございました。

  23. no.12 panser Says:
  24. 便利なプラグインですね テストさせて下さい。
    投稿後のコメントです。
    間違っても再度コメント修正できるんですね
    これはほんと便利です :lol:
    是非利用させて頂きたいと思います 8)

  25. no.13 panser Says:
  26. 再度テストさせて下さい
    今しがた当サイトで設置してみてテスト投稿したところ
    タイムリミットになるとサイト全体が崩れてしまいました。
    タイムリミットの場合の表示はどのようになるのでしょう?
    その辺が不具合が起きてるよう・・・・ ;(

  27. no.14 panser Says:
  28. 今しがた利用させて頂き当サイトに設置したところ最初投稿は正常に
    投稿されました。再編集し送信するとTOPページまで移動されるので
    下スクロールして再度コメントして再送信すると全体が崩れて下記のようなエラーが出てしまいます。
    誠に恐縮ですがアドバイス頂けないでしょうか。
    宜しくお願いします。
    エラー:http://vita.qee.jp/wp/WS075.JPG

  29. no.15 panser Says:
  30. テストさせて下さい。導入がうまくいきません。
    再編集の際にエラーが下記のように出て全体が崩れます。

    WordPress database error: [You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1]
    SELECT comment_content, comment_author_IP, comment_date_gmt FROM wp_2comments WHERE comment_ID =

    You aren't allowed to edit this comment, either because you didn't write it or you passed the 30 minute time limit.

    恐れ入りますが宜しくお願いします。

  31. no.16 panser Says:
  32. 「コメントの再編集機能」http://bd.dotted.jp/archives/67/#comment-36204
    そこでこれを是非導入したく考えてるのですがどうもエラーが起きます。
    最初のコメントは投稿できるのですが投降後の再編集の際、ページTOPへ移動して
    再コメントするとエラーが出て全体が崩れます。
    エラーの状態:http://vita.qee.jp/wp/WS075.JPG
    誠に恐縮ですがアドバイス頂けないでしょうか。
    恐れ入りますが宜しくお願いします。

  33. no.17 panser Says:
  34. コメントしてもすぐコメントが消えてるので再度コメントします。
    「コメントの再編集機能」http://bd.dotted.jp/archives/67/#comment-36204
    そこでこれを是非導入したく考えてるのですがどうもエラーが起きます。
    最初のコメントは投稿できるのですが再投稿後、ページTOPへ移動して
    再コメントするとエラーが出て全体が崩れます。
    エラーの状態:http://vita.qee.jp/wp/WS075.JPG
    誠に恐縮ですがアドバイス頂けないでしょうか。
    恐れ入りますが宜しくお願いします。

  35. no.18 panser Says:
  36. コメントしたら今までのコメントが表示されますね?
    サイトに入った時は自分のコメントがない状態です。
    どうしてでしょうか?

  37. no.19 とりっくすたぁ Says:
  38. テストさせてくださいませ。

  39. no.20 とりっくすたぁ Says:
  40. てすとさせていただきました♪
    編集してみました。

  41. no.21 ようこ Says:
  42. テストさせて下さい

  43. no.22 test Says:
  44. テストですよ。

  45. no.23 TEST Says:
  46. テストさせてください。
    >なるほど。

  47. no.24 てすとです Says:
  48. てすとですー
    /編集

  49. no.25 ふかぞう Says:
  50. テストさせてください。編集!
    ここも、

    WordPress database error: [You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1]
    SELECT comment_content, comment_author_IP, comment_date_gmt FROM bd_comments WHERE comment_ID =

    You aren't allowed to edit this comment, either because you didn't write it or you passed the 30 minute time limit.

    とエラーメッセージが出ますね。
    私のブログで設置したときもそうでした。
    WordPressの最新バージョンに対応していないのか、
    それともSQLのバージョンがMySQL 4.0.2xなのが問題なのか・・
    こうしたら出なくなるなどないでしょうか?
    初めての書き込みで失礼いたしましたm(__)m

  51. no.26 Kaira Says:
  52. ふかぞうさん。エラーの報告ありがとうございます。
    時間を見つけて調べてみますね。

  53. no.27 Kaira Says:
  54. jal-edit-comments.phpを編集することでエラーを回避できるようです。
    84行目の
    $location = add_query_arg('jal_edit_comments', '', $_SERVER['HTTP_REFERER']);

    $location = add_query_arg('jal_edit_comments',  $_SERVER['HTTP_REFERER']);
    に変更してみてください。

  55. no.28 ふかぞう Says:
  56. わ、早い対応ありがとうございます。
    私の方もさっそく修正してみましたが、
    私の「jal-edit-comments.php」(バージョン0.3Beta)
    $location = add_query_arg('jal_edit_comments', '', $_SERVER['HTTP_REFERER']);
    は91行目にありました。
    修正してみましたが、投稿ボタンをクリックすると
    透明なページが表示されて、
    http://○○.com/wp-comments-post.php?jal_edit_comments=http://○○.com /?p=10&jal_edit_comments=22#comment-22

    のようなURLになります。
    ***********************************************
    // remove query arg from referer
    $location = add_query_arg('jal_edit_comments', $_SERVER['HTTP_REFERER']);
    // take out the #commentform bit
    $location = str_replace('#commentform', '', $location);
    // direct them to the comment they edited
    $location .= "#comment-".$comment_post_ID;
    // off we go!
    header("location: {$location}");
    die();
    } else
    die("You aren't allowed to edit this comment, either because you didn't write it or you passed the {$jal_minutes} minute time limit.");
    }
    ***********************************************
    この部分、他にも変更しないといけないところがあるんでしょうか?
    ちょっといじったんですが、なかなか近づけないんですよね(^-^;
    たびたびずうずうしいんですが、お助けいただけると助かります。よろしくお願いします。

  57. no.29 ふかぞう Says:
  58. たびたびすみません。こんばんは。
    昨日は長いコメントを書いてしまい失礼しました。
    あれからいろいろやってみまして、
    $location = add_query_arg('jal_edit_comments', FALSE, $_SERVER['HTTP_REFERER']);
    と、「FALSE」を入れたらエラーが出なくなりました。
    PHPが基本的にわかってないので、なんでこれでいいのかが?なんですが(^。^;)、一応結果オーライということでお知らせさせていただきます。
    お騒がせしました(^^)

  59. no.30 Kaira Says:
  60. あ、FALSEの部分が抜けてましたね。
    昨日の時点で一応は動いた(編集は出来た)ので気がつきませんでした。失礼しましたー。

  61. no.31 thase Says:
  62. 読者に優しいプラグインですね。実験させていただきます。
    お、追加書き込みできますぞ。
    だけど、追記をして、EditCommentボタンで投稿すると白いページに飛ばされました。

  63. no.32 Kaira Says:
  64. 上記コメントの部分を修正していませんでした。
    もう大丈夫なはずです。

  65. no.33 kei Says:
  66. テストさせて貰いますね

    お~コレはいいかも

  67. no.34 ゆうじ Says:
  68. wordpress初心者です。
    テストさせていただきました。
    どうもありがとうございました。

  69. no.35 いまむら Says:
  70. テストさせてください。

    おー、なるほどー

  71. no.36 HASH Says:
  72. テストさせていただきます

    これは便利ですね~

  73. no.37 omlan Says:
  74. なるほど

  75. no.38 soba Says:
  76. わたしもテストさせてください。

  77. no.39 ok Says:
  78. てすとなのだ

  79. no.40 kana Says:
  80. テストさせてくださいませ。編集

  81. no.41 hachi Says:
  82. 編集テストお願いします。
    自分のはうまくいかずSQLエラーが出ます。

  83. no.42 hachi Says:
  84. 上手くいきました。
    ふかぞうさんの過去ログで解決しました。
    有難う御座いました。

  85. no.43 uk Says:
  86. テストさせてください。

    出来ました!ありがとうございます。参考になりました。

  87. no.44 わわわ Says:
  88. testわわわ
    Thanks

  89. no.45 さそり座のだんな Says:
  90. この機能つかえそう…
    早速テストさせてもらいます。

    うん。すごくいいぞ。

    Thank you!

  91. no.46 elevener Says:
  92. テストさせていただきます

    編集できました。
    ありがとうございました。

  93. no.47 hash Says:
  94. テストです

  95. no.48 test Says:
  96. test edit

  97. no.49 kyohe Says:
  98. テストさせてください

Leave a Reply