【WordPress】コメント内のURLを自動でリンクにさせない方法!make_clickableを取り除く
先日コメントを頂いたんですが、「http://localhost~」という一般的には無効なURLが記載されていました。
こちらの記事です。2015年7月からXAMPPの導入手順が分かりにくくなりました!対応の方法
開発環境の自分のPCに対するURLのリンクだし、対象の記事もXAMPPに関するもので全く問題ないコメントなんです。
ただ1つ問題なのが、リンクが有効になってしまっていることでした。
自動で<a>タグで囲まれてしまっているんです…。
確かに便利なんですが、無効なリンク(デッドリンク)を置いておくことはSEO上よろしくない。
なので、自動でリンクタグを付けない方法を調べました。
スポンサーリンク
自動でリンクタグを付けない方法
まず大前提ですが、「functions.php」に手を加えます。
正しくない方法
まずは、こちらを参考にしました。
remove_filter('comment_text', 'make_clickable');
それっぽいので正しいと思ったんですが、導入してみてもリンクがばっちり付いてます…。
他にも探してみました。
正しい方法
remove_filter('comment_text', 'make_clickable', 9);
最後の9は何なんや(;・∀・)と思いつつ試す。
さっきのやつに何かのオプション「,9」を追加します。
リンクが無効になった!!
最後のオプションは何なのか
謎の数字9の正体を探ります。
<?php remove_filter( $tag, $function_to_remove, $priority ); ?>$priority
(整数) (オプション) 関数の優先順位(関数がフックへ追加されたときに指定された値)。
初期値: 10
優先順位のことらしいです。
高い方が強いんだよね?(;・∀・)
なら初期値が10なんだし、そのままでも殺してくれるのでは?と思ったんですがそうではないようです。
priorityに、「8」とか「11」とか指定してみましたが、リンクは無効になりません。
9でないとダメです(´・ω・`)
あ、リファレンスにこうも書いてある
重要: フックから関数を除去するには、$function_to_remove と $priority 引数が、フックへ関数が追加されたときと一致する必要があります。これはフィルター、アクションの双方に当てはまります。除去に失敗した時に警告は出ません。
つまりは「make_clickable」がpriority=9で追加されているから9を指定せんとあかんと!
wp-includes/default-filters.phpを覗いてみる。
add_filter( 'comment_text', 'make_clickable', 9 );
お前のせいか( ゚д゚ )
というわけで、9を指定しないと殺せません!優先順位とは一体!
終わりに
これで自動リンクは無効にできたので、無事にコメントを公開できました。
最近スパムコメントが多いので画像認証足そうかちょっと迷っています。
スパム対策のプラグインはたくさんありますが、どれもサーバーに結構な負荷かけそうなのでどうするか検討中。
鬱陶しいIPだけ.htaccessで弾く方法でちょっとやってみて、イタチごっこになるようなら画像認証いれてみよう。
今回の内容はURLの文字列を自動でリンクにしてしまう機能を殺しただけなので、スパムみたいに<a>タグでリンク付けてきた場合は対処できません。
コメントを承認制にしていれば、まずそんなコメントしてくる人はいないと思うので大丈夫だと思いますw
それでは。