雨過天晴

専用ディレクトリに設置してルートで表示させたらパスワード保護ページに飛べなくなった

2015.11.19

WordPress備忘録

img from: フリー素材ぱくたそ

この記事は2015年11月19日に書かれたものです。古い内容や非推奨要素を含む可能性がありますのでご注意ください。

タイトルまんまですが。
会社のサイトを作ってまして、ルートをファイルで散らかすのがいやなので専用ディレクトリにWordPress関連を全て放り込んでます。

ルートで表示させるように設定したら、まず表示アドレスからの相対パスで書いていた画像が見えなくなった。これはまあ当たり前なので書き直して済んだのですが、パスワード保護してる投稿と固定ページが、パスワードを入力しても404エラーになるのです。
困った…焦った…調べても同じ事象が出てこない…。
手を休めていただきもののシフォンケーキを頬張ったら、はた、と思い出した。
そういえばパスワード入力フォーム周りのカスタマイズしてるやん?それちゃう?

結果、それでした。
パスワード保護するとタイトル前に「保護中」と出るのと、あとパスワード入力フォーム前のコメント変えたくてfunctions.phpに追加してたんです、忘れてたけど。
パスワード入力前のコメントのカスタマイズにはformタグを書く必要があって、つまりactionでurlが指定してあって、つまりそこのパスが違ってたわけですううううううう!
あほだ!あほすぎる自分!

カスタマイズ内容のメモ。
ページごとにメッセージ変えたければ条件分岐か、カスタムフィールドぶっ込めばいいのかな。

/*「保護中」を消す*/
add_filter('protected_title_format', 'remove_protected');
 function remove_protected($title) {
  return '%s';
 }
/*フォームのメッセージを変更*/
 function my_password_form() {
  return
   '<p>このページを見るにはパスワードが必要です。<br />パスワードが分からない場合は当社までお問い合わせください。<p>
    <form id="post_pass" class="post_password" action="' . home_url() . '/wp-login.php?action=postpass" method="post">
    <input name="post_password" type="password" size="24" />
    <input type="submit" name="Submit" value="' . esc_attr__("パスワード送信") . '" />
    </form>';
 }
add_filter('the_password_form', 'my_password_form');

フォームメッセージ変更のformタグ内のaction属性ね。ここねここ。
ここを実際のwordpress専用ディレクトリに指定し忘れると駄目なんですね。

慣れない作業をするときは落ち着こう!という反省でした。