プラグインなしで「プロフィール」ウィジェットのリンクを無効にする方法

Cocoonカスタマイズ集
この記事は約2分で読めます。
記事内に広告が含まれています。

記事に記載したコードは、スキンに追加されています。

はじめに

プロフィールページURL

WordPressでは、記事を投稿したユーザーごとに投稿者アーカイブページが自動で作成されます。

「プロフィール」ウィジェットや、Cocoon設定→本文 →投稿関連情報「投稿者名を表示する」をオンにすると、投稿者名からそのプロフィールページへリンクされます。

図1に示すように、設定→プロフィール→プロフィールページURLが未入力、またはURLに/?author=1のような形式を使用している場合、投稿者アーカイブページが表示されます。
このURLにはユーザー名が含まれるため、ユーザーIDの漏洩リスクがあります。

https://example.com/author/ユーザー名/

対策として、プラグイン「Edit Author slug」を使用することが多いかと思います。
しかし、プラグインを使わずに、プロフィールページURLが未入力の場合、プロフィールページのリンクを無効化する方法もあります。

この記事では、その方法について説明します。

実装手順

以下のコードをfunctions.phpに追加します。

// 投稿者名のプロフィールリンクを無効
add_filter('the_author_box_name', function ($name, $id) {
  $url = get_the_author_profile_page_url($id);

  if (!$url) {
    $name = strip_tags($name);
  }

  return $name;
}, 10, 2);


// 投稿者アーカイブページを無効化
add_action('template_redirect', function () {
  // 投稿者アーカイブURLまたは「?author=数値」形式のアクセスを判定
  if (is_author() || (isset($_GET['author']) && is_numeric($_GET['author']))) {

    // トップページへ301リダイレクト
    wp_safe_redirect(home_url(), 301);
    exit;
  }
});

さいごに

今回紹介した方法を使えば、プラグインなしで「プロフィール」ウィジェットの投稿者リンクを無効化し、投稿者アーカイブページへのアクセスも制限できます。
セキュリティ対策の一環として、ユーザー名の漏洩を防ぎたい場合にぜひ活用してください。

タイトルとURLをコピーしました