Worpdressで固定ページをプライバシーポリシーに設定するとログインページにもそのリンクが表示されてしまいます。
プライバシーポリシーや利用規約へのリンクは閲覧者がアクセスしやすい場所に設置するのが望ましいですが、ログインページには不要でしょう。
なぜこんな仕様になっているのかよく分かりませんが、削除します。
functions.phpにコードを追記します。style.cssでは消せませんでした。
ログインページのプライバシーポリシーを消す
Wordpressには固定ページをプライバシーポリシーに使用するためのページとして設定する機能が付いています。
機能は固定ページそのものですが、設定しておくと管理画面でポリシーガイドを確認したり、プライバシーポリシーページのリンクを表示する関数が使えたりします。
プライバシーポリシーページとして設定してもリンクはどこにも表示されません。
(自動でリンクを表示するテーマは少ないはずです。)
が、なぜかログインページには自動で表示されます...
正直初めて見た時はそこに表示するの!?と思いました。
ログインページにテーマは関係ないので仕様のようです。
こんな場所にプライバシーポリシーへのリンクを表示しても誰も見れません。
気持ち悪いので?このリンクを消します。
CSSで非表示にすることは難しい
通常ログインページはサイト運営者しか見ない(見れない)ページなのでCSSの「display: none;」で消せばいいじゃん!
と思い、子テーマのstyle.cssに記述しましたが見事に失敗でした。
ログインページにはテーマのCSSは読み込まれない
原因はログインページに子テーマのsytle.cssが読み込まれていない為でした。
Chromeのデベロッパーツールでログインページに読み込まれているCSSを確認したところ、Wordpressに始めから入っているCSSのみが読み込まれているようです。
まぁログイン画面の見た目をカスタムする人も少ないでしょうしね…
どうしてもCSSで非表示にしたいなら、ログインページで読み込まれているCSSにスタイルを追記する必要があります。
/wp-includes/css/dashicons.min.css
などに
.login .privacy-policy-page-link { display: none; }
と書けば非表示にできなくもないです。
ただし、コアファイルなのでアップデートの度に戻ってしまいます。
functions.phpで非表示にする
上手くいかないのでうーんと思っていたのですが、Wordpress4.9.6から実装された「the_privacy_policy_link」という関数を使えば上手くいきました。
プライバシーポリシーページのリンクを表示する関数です。
これを使ってログインページの時だけ空(null)にします。
プライバシーポリシーを非表示にするコード
子テーマなどのfunctions.phpに下記のコードを追記すればOKです。
//ログインページのポリシーリンク削除 function delete_privacy_policy_loginpage( $link, $privacy_policy_url ) { if ( 'wp-login.php' === $GLOBALS['pagenow'] ) { return null; } } add_filter( 'the_privacy_policy_link', 'delete_privacy_policy_loginpage', 10, 2 );
ログインページの条件分岐にはグローバル変数を使うのですね・w・
これできれいさっぱり!
ログインページにプライバシーポリシーを表示する意味...どなたかご存じ?
表示しておいても問題はない
今回は自己満足でリンクを消しましたが、セキュリティ的にも考えてみました。
Wordpressのログインページはセキュリティ強化のためにURLを任意のものに変えて、自分しか分からないように隠しておくのが定石です。
そこで思ったことが1つあります。
プライバシーポリシーページの被リンクを調べればログインページのURLが分かるのでは?
被リンクチェックツールで検証したところ当サイトでは問題はなさそうでした。
「https://sologaku.com/author/1/」
となっていたのでこれがログインページなのかな?
そもそも仕様なので、セキュリティが貧弱になるようなことは無いと思います。
まとめ
Wordpressのログインページに表示されるプライバシーポリシーページのリンクを消す方法でした。
正直どっちでも良さそう・w・
完全に自己満足になりましたが、管理画面の条件分岐や関数について一つ勉強になりました。
なぜこんなところにry