SWELL風の投稿者情報を本文下に表示する方法

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

参考:ウィジェットを用いる方法

前述では、ユーザーのプロフィールに独自の著者情報フィールドを追加し、そこから情報を出力していました。

ここでは、パターン機能を活用してプロフィールの説明文(ディスクリプション)を置き換えます。

実装手順

以下の手順で実装します。

  • ラベル
    「プロフィール」ウィジェットの配置
    [C] プロフィール

    「 プロフィール」ウィジェットを「投稿関連記事上」に配置します。

  • ラベル
    パターンを作成

    パターンに本文下に表示する著者情報を作成・登録します。

  • ラベル
    PHPを追加

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

    // ウィジェットの出力パラメータを変更
    add_filter('dynamic_sidebar_params', function ($params) {
      $GLOBALS['current_widget_id']   = $params[0]['widget_id'];
      $GLOBALS['current_sidebar_id']  = $params[0]['id'];
      return $params;
    });
    
    
    // 著者ボックスの説明文を変更
    add_filter('the_author_box_description', function ($description, $author_id) {
      $pattern_id = 12345;  // パターンID
    
      if (
        !empty($GLOBALS['current_sidebar_id']) &&
        $GLOBALS['current_sidebar_id'] === 'above-single-related-entries' &&
        !empty($GLOBALS['current_widget_id']) &&
        strpos($GLOBALS['current_widget_id'], 'author_box') === 0
      ) {
        $output = do_shortcode('[pattern id=' . intval($pattern_id) . ']');
    
        unset($GLOBALS['current_widget_id']);
        unset($GLOBALS['current_sidebar_id']);
    
        return $output;
      }
      return $description;
    }, 10, 2);

参考:ショートコードを用いる方法

プロフィール情報をショートコードで表示している場合、ショートコードのパラメータでパターンIDを指定できます。

使用方法

以下にショートコードを示します。

[author_box pattern_id="12345"]

実装手順

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

// ショートコード実行前に変更
add_filter('pre_do_shortcode_tag', function ($return, $tag, $attr) {
  if ($tag === 'author_box' && isset($attr['pattern_id'])) {
    $GLOBALS['author_box_pattern_id'] = absint($attr['pattern_id']);
  }

  return $return;
}, 10, 3);


// 著者ボックスの説明文を変更
add_filter('the_author_box_description', function ($description, $author_id) {
  if (!empty($GLOBALS['author_box_pattern_id'])) {
    $pattern_id = $GLOBALS['author_box_pattern_id'];
    unset($GLOBALS['author_box_pattern_id']);

    return do_shortcode('[pattern id="' . $pattern_id . '"]');
  }

  return $description;
}, 10, 2);

さいごに

今回紹介した方法を使えば、WELLのように投稿者情報をプロフィールに追加し、本文下に表示することができます。
「プロフィール」ウィジェットと同じ形式で表示されるため、サイトの統一感も損なわず、著者情報をわかりやすく伝えることが可能です。

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