Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
<?php
function require_login_for_private_works() {
if ( ( is_singular( 'works' ) && has_term( 'private', 'works_cat' ) || is_tax( 'works_cat', 'private' ) ) && ! is_user_logged_in() ) {
/**
* ログイン成功時に現在のページに戻ってくるため、現在のURLを取得する
* get_home_urlだと、サブディレクトリにインストールしている際に問題になりますので、
* $_SERVER['HTTP_HOST'] を使った方が良いでしょう
* set_url_scheme関数は、SSLの使用を考慮してくれます
*/
$redirect_to = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
/**
* header()関数を使っても動きますが、より安全な wp_safe_redirect 関数を使いましょう
*/
wp_safe_redirect( wp_login_url( $redirect_to ) );
exit;
}
}
/**
* リダイレクト系のフックはtemplate_redirectにかける方がいいと思います
* get_headerはいかにもhttpヘッダに関係ありそうな名前ですが実は関係なく
* テンプレートのheader.phpを読み込むところです
*/
add_action( 'template_redirect', 'require_login_for_private_works' );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment