
舟木さんが歌う(cover)


歌心の化身、舟木一夫。心ゆくまで聴いてくださいませ。

WordPressで「管理人(管理者権限を持つユーザー)以外」がパスワード再設定画面(wp-login.php?action=lostpassword)にアクセスした際、画面を切り替えさせずにログイン画面へ強制リダイレクト(あるいは拒否)するには、テーマのfunctions.phpファイルにカスタムコードを追加する方法が最も確実です。
現在ログインしているユーザー、または入力されたユーザー名・メールアドレスが管理者かどうかを判別して制御します。
実装手順
現在使用しているテーマのfunctions.phpに以下のコードを貼り付けます。
安全のため、作業前に必ずファイルのバックアップを取ってください。
パターン1:URL直接アクセスも完全にブロックする(推奨)
画面下の「パスワードをお忘れですか?」リンクを隠すだけでなく、URLを直接入力してアクセスしてきた場合も、管理者以外なら通常のログイン画面に強制リダイレクトさせます。
php
// 1. パスワード再設定画面へのアクセスを判定してリダイレクト
add_action('login_form_lostpassword', 'restrict_lost_password_access');
function restrict_lost_password_access() {
// ログイン済みユーザーがアクセスした場合のチェック
if (is_user_logged_in()) {
if (!current_user_can('administrator')) {
wp_redirect(wp_login_url());
exit;
}
}
}
// 2. メールアドレス・ユーザー名が送信された時点の処理(未ログイン時のリクエスト対策)
add_filter('allow_password_reset', 'restrict_password_reset_by_user', 10, 2);
function restrict_password_reset_by_user($allow, $user_id) {
// 送信されたユーザーが管理者(administrator)でない場合はリセットを拒否
if (!user_can($user_id, 'administrator')) {
return false;
}
return $allow;
}
// 3. ログイン画面の「パスワードをお忘れですか?」リンクを非表示にする
add_filter('gettext', 'remove_lostpassword_text');
function remove_lostpassword_text($text) {
if ($text == 'パスワードをお忘れですか?' || $text == 'Lost your password?') {
return '';
}
return $text;
}
コードは注意してご使用ください。
パターン2:全員(管理者含む)のパスワード再設定を完全に無効化する
もし「管理者の自分も画面からの再設定は不要(パスワード変更はダッシュボード内からしか行わない)」という場合は、以下の数行だけでサイト全体のパスワードリセット機能を完全に停止・非表示にできます。
php
// 全ユーザーのパスワードリセットを無効化
add_filter('allow_password_reset', '__return_false');
// ログイン画面のリンクを非表示にする
add_filter('gettext', function($text) {
if ($text == 'パスワードをお忘れですか?' || $text == 'Lost your password?') {
return '';
}
return $text;
});
コードは注意してご使用ください。
プラグインで対応したい場合
コードの編集に不安がある場合は、ログイン画面を総合的にカスタマイズできる無料プラグイン LoginPress や SiteGuard WP Plugin を導入することで、「パスワードをお忘れですか?」のリンク自体を管理画面上のチェック一つで簡単に非表示にできます。
WordPressの「親テーマ」と「子テーマ」とは、Webサイトのデザインや機能を安全にカスタマイズ(編集)するための仕組みのことです。
難しく考える必要はありません。一言でいうと「本体(親)」と「カスタマイズ専用のメモ帳(子)」のような関係です。
親テーマと子テーマの違い
親テーマ(本体):サイト全体のデザインや機能がすべて詰まったベースとなるテンプレートです。
子テーマ(メモ帳):親テーマのデザインを引き継ぎつつ、自分が変更したい部分だけを書き込むための専用テーマです。
なぜ分けるの?(子テーマを使う理由)
最大の理由は、テーマがアップデート(更新)されたときに、自分が加えたカスタマイズが消えてしまうのを防ぐためです。
❌ 親テーマを直接編集した場合
背景の色や文字の大きさを書き換える。
テーマの機能追加やセキュリティ対策でアップデートが届く。
アップデートするとファイルが丸ごと上書きされ、自分が苦労して変えたデザインがすべて消えて初期化される。
⭕ 子テーマを使う場合
「子テーマ」側を有効化し、変更したい部分だけを子テーマに書き込む。
親テーマにアップデートが届いて更新されても、別ファイルである子テーマの中身は守られる。
自分のカスタマイズを残したまま、常に最新の安全なシステムを使える。
どうやって使うの?
WordPressの管理画面(外観 > テーマ)を見ると、例えば人気の無料テーマ「Cocoon」などの場合、「Cocoon(親)」と「Cocoon Child(子)」の2つが画面に並びます。
導入手順:両方ともインストールする。
有効化:必ず「子テーマ(Childと書かれている方)」だけを有効化して使用する。
子テーマを有効化すると、システムが自動的に「ベースは親テーマを読み込み、変更された部分だけ子テーマのデザインを上書きする」という動きをしてくれます。
もし「デザインのカスタマイズは一切せず、用意された設定のまま使う」という場合は親テーマだけでも問題ありませんが、少しでもCSSコードなどを触る予定があるなら、最初から子テーマを有効化してサイトを運用するのがWordPressの鉄則となっています
問
wordpressで、youtubeの音楽動画を数個配置するページが幾つもあります。お客様がお一人で複数の動画を同時に再生すると、ご想像通りの喧しい惨状と化します。これを避けるため、「Embed Plus for YouTube Gallery, Livestream and Lazy Loading with Facades」というプラグインを入れました。当初はご指導を受けてまずまずページを作成していたのですが、更新が滞っているうちにノウハウをすっかり忘れてしまいました。そこですでに作成済みのページのコードを見て、次のようにやっています。
1.カスタムHTMLを挿入
2.この中に、をいれる。
3. ●に動画のURLを入れる
正式な方法をもう一度教えてください。
回答
もっとスマートで簡単な「本当の方法」は、「YouTubeのURLをそのまま空行に貼り付けるだけ」です。
「Embed Plus」プラグインが有効になっていれば、わざわざカスタムHTMLブロックや専用のウィザード(Wizard)を開かなくても、プラグイン側でURLを自動認識して、複数動画の同時再生を防ぐ機能(同時再生制御機能)をしっかりと効かせてくれます。現在主流のブロックエディター(Gutenberg)をお使いの場合、以下の3つの方法があり、上に行くほどスマートに作業が完了します。
1. 最もスマートな方法:URLをそのまま貼り付ける(推奨)
これが一番手軽で、コードを一切触らない方法です。
2. 専用ブロックを使う方法:一番確実な方法
プラグイン専用の機能を編集画面上でもはっきり視認しながら進めたい場合は、こちらの方法がおすすめです。
YouTube」または「Wizard」と入力します。3. 現在のショートコードを使う方法(補足)
ご質問に記載されていた を使う方法も間違いではありません。このショートコードを使う場合は、「カスタムHTML」ブロックではなく、WordPress標準の「ショートコード」ブロックを使うのが本来の形です。ただし、上記1や2の方法に比べると文字を入力する手間がかかります。
まずは、一番簡単な 「新しい行にURLをそのまま貼り付けるだけ(方法1)」 を試してみてください。一番サクサクとページが作成できるはずです