訳あって(まあ、訳もなく何かを作る人も少ないがw)、題に書いた機能が欲しくなった。が、調べても(プラグインでも)できないようだったので、自分で何とかした。

少し詳しく書くと、WordPress(およびプラグイン)では、サイト全体または投稿ごとににコメントできるかどうかの設定はできるが、既にコメントがある投稿をコメントできないようにすると、過去のコメントが表示されなくなってしまう。それは嫌なので、過去のコメントは表示されたまま、新しいコメントを投稿できないようにした。実装中に気付いたのだが、コメントの表示や投稿欄はテーマごとに実装している(新しいテーマはそうでないのかも知れないが、調べてはいない)ために、WordPressの設定やプラグインでは不可能なのかも知れない。

なお、「コメントの手動承認」を必須にすれば、新しいコメントは即座には表示されなくなるが、いちいち捨てるのは手間だし、(説明を読まずに)不可なのを知らずに投稿する人が出そうだから良くない。

いろいろなやり方はあるだろうが、以前、投稿の期限切れ処理をしないようにした時と同様に(結構安直に)、対象の投稿にタグで「コメント追加不可」をマークし、コメント表示・投稿ページでは、マークされている場合にはコメント投稿欄を表示しないようにして、新しいコメントを投稿できないようにした※。また、本ブログのWordPressの登録ユーザー(といっても自分だけだが)は引き続きコメントの追加ができるようにして、保守できるようにした。なお、コメント追加不可のタグは""とした。

※本ブログではタグを使っていないので、このような利用方法が可能である。

参考までに、以下にコメント表示・投稿ページでの追加処理に関係する関数などを挙げる。

  • 投稿($post)のタグ一覧の取得
    • $tags= wp_get_post_tags($post->ID);
  • 「コメント追加不可」タグが設定されているかの判定: 取得した投稿のタグのスラグが「コメント追加不可」タグのスラグ(RO_COMM_SLUGとする)と一致するかどうか(スラグ以外も使用可能と思う)。
    • $tags[N]->{"slug"} == RO_COMM_SLUG : Nはタグのインデックス(0..)。
  • WordPressのユーザーID: $user_ID (テーマの中などで使用可能)

なお、この機能はコメント投稿欄を表示しないだけなので、裏技を使えば投稿できそうな気がするが、不可にしているのに投稿して来たら問答無用でスパムにしてブロックすればいいので、大きな問題はない。

  •   0
  •   0

コメントを書く

名前    

メール 

URL