アフィリエイト広告を利用しています

パスワード保護ページ アンカーリンクを保持して開くカスタマイズ【Snow Monkey・WordPress】

WordPressのSnow Monkeyで作っているWEBページにて、パスワード保護したページのページ内アンカーリンクを利用しようとしても、パスワードを入力したタイミングで、アンカーリンクの部分が引き継ぎできない。

アンカーリンクを引き継ぎするようにカスタマイズした。

前提となるのは、Snow Mokeyの場合は、パスワード保護の部分は、独自パーツになっており、snow-monkey/app/setup/protected.php の中でも、

add_filter(
	'the_password_form',
....
11
);

は使われており、優先度が 11 に設定されている。そのため、カスタマイズするコードでは、優先度を大きな数字(12以上)にして、Snow Monkeyのコードの実行後にしないと、上手くいかない。なお、省略すると、10 なので、注意が必要だ。

my-snow-monkey.phpに以下のコードを追加するとOKだ。

/* WordPressパスワード保護ページでログイン後アンカーリンクを保持 */

add_filter( 'the_password_form', function ( $output ) {
	global $post;
	global $wp;
	return str_ireplace( '</form>', '<input type="hidden" id="_wp_http_referer" name="_wp_http_referer" class="_wp_http_referer" value="' . trailingslashit( home_url( $wp->request ) ) . '"></form>', $output );
},12 );

add_action( 'wp_footer', function () {
	ob_start();?>

<script type="text/javascript">

window.onload = function () {
if( document.getElementById('_wp_http_referer') ){
	const anchor = window.location.hash;
	console.log(anchor);
	let redirect_to_url = document.getElementById('_wp_http_referer').value;
	redirect_to_url = redirect_to_url + anchor;
	document.getElementById('_wp_http_referer').value = redirect_to_url;
	console.log(document.getElementById('_wp_http_referer').value);
}
}
</script>
<?php
	echo do_shortcode( ob_get_clean() );
});

これで、パスワード保護のページでも、ページ内アンカーリンクを利用できる。

参考記事はこちら。感謝です。

✓ あわせて読みたい
Jump Link into Password protected page

この記事を書いた人

大東 信仁

カンパチが好きです。

プロフィールはこちら

10月14日開催 参加者募集中
(画像をタップ→詳細へ)

ミッションナビゲート モニター
(画像をタップ→詳細へ)

広告