WordPress の投稿一覧(アーカイブ)ページおいて、投稿一覧の中にパスワード保護の投稿があった場合、そのパスワードを入力すると、正しいパスワードでも間違ったパスワードでもページトップに移動してしまいます。
これでは、またその投稿の位置にスクロールしないといけなくなり不便です。そこで、パスワードを入力後に、ページトップに移動しないようにしてみたいと思います。
方法は、パスワード入力フォームのアクション(送信先)に、その投稿のアンカーポイントを追加する方法です。
PHP コード
テーマの functions.php 等に、下記コードを追加します。
function my_password_form( $output ) {
if ( is_home() || is_archive() ) {
if ( preg_match('/pwbox-([0-9]+)/', $output, $match ) ) {
$id = $match[1];
$output = preg_replace('/(<form action=")(.*?)(".*?>)/', "$1$2#post-{$id}$3", $output );
}
}
return $output;
}
add_filter( 'the_password_form', 'my_password_form' );