- 投稿者アーカイブ
サイトURL/?author=N
にアクセスする(IDがN
に該当するユーザが存在する場合はそのユーザの投稿者アーカイブにリダイレクトされる)
- WP REST API
サイトURL/wp-json/wp/v2/users
やサイトURL/?rest_route=/wp/v2/users
にアクセスすると、ユーザ情報のJSONがレスポンスとして返却される
投稿者アーカイブ
シンプルなコードとしては以下をfunctions.php
に記述するというもの。
add_filter( 'author_rewrite_rules', '__return_empty_array' );
※記述後は管理画面の「設定」→「パーマリンク設定」を開き、で何も変更せずに「変更を保存」をクリックして変更の反映を行います。 ※このコードでは投稿者アーカイブは404ページになるものの、URLは投稿者アーカイブにリダイレクトされてしまうのでURLも変更したい場合は他の対策が必要です。
function disable_author_archive() {
if( $_GET['author'] || preg_match('#/author/.+#', $_SERVER['REQUEST_URI']) ){
wp_redirect( home_url('/404.php') );
exit;
}
}
add_action( 'init', 'disable_author_archive' );
こちらはGETパラメータまたはURLにauthor
が含まれている場合に404ページにリダイレクトするもの。こちらであればURL自体404ページへのリダイレクトなのでURLも隠匿できますね。
WP REST API
function l_ile_mysterieuse( $result, $wp_rest_server, $request ) {
// oembed, Contact Form 7, Akismet の3つは許可
$permitted_routes = [ 'oembed', 'contact-form-7', 'akismet'];
$route = $request->get_route();
foreach ( $permitted_routes as $r ) {
if ( strpos( $route, "/$r/" ) === 0 ) {
return $result;
}
}
// ユーザーが投稿やページの編集が可能な場合にブロックエディタを許可
if ( current_user_can( 'edit_posts' ) || current_user_can( 'edit_pages' )) {
return $result;
}
return new WP_Error( 'rest_disabled', __( 'The REST API on this site has been disabled.' ), array( 'status' => rest_authorization_required_code() ) );
}
add_filter( 'rest_pre_dispatch', 'l_ile_mysterieuse', 10, 3 );
こちらのケースでは、
- 管理画面の機能が WP REST API に依存しているため完全無効化は推奨されていない
- Contact Form 7 など、一部プラグインで使用しているケースがある
参考
両方への言及
投稿者アーカイブ
- WordPressで作成者(投稿者)アーカイブを作らない方法(リライトルールの勉強) | Gatespace’s Blog
- 投稿者アーカイブを無効化してWordPressのユーザ名を隠す方法 – ウェブコンテンツ