WordPress 投稿一覧のパスワード保護入力後のスクロール位置

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' );

コメントを残す

メールアドレスが公開されることはありません。

日本語でコメントを入力してください。(スパム対策)