【WordPress】widgetsに自動投稿者別プロフィールを作成

【WordPress】widgetsに自動投稿者別プロフィールを作成
2020年3月9日
プラグイン無しで投稿者を自動で判別し、プロフィールを表示してくれるウィジェットをPHPで作ります。
プロフィール画像・投稿者名・プロフィールを自動表示させます。
今回作るのはこんな感じです。

WordPressで1つのサイトに複数人が記事を投稿しているような場合、このウィジェットがあればプロフィール表示がかなり便利になります。
スポンサーリンク
PHPファイルの作成
まずはテーマエディタに動かしたいPHPファイルを作成します。
functions.phpと同じディレクトリにファイルを作ってください。
テーマファイル内に新規ファイルの追加方法がわからない方はこちらをご覧ください。
テーマファイル内に”widgets-author.php”というファイルを新しく作りました。
widgets-author.php
widgets-author.phpにプロフィールを表示させる内容を作っていきます。
コピペでもOK!
//プロフィールの取得
<?php
//投稿者名を取得
$author = get_the_author();
//投稿者のアバターを取得(大きさを250pxにした)
$author_avatar = get_avatar(get_the_author_meta( 'ID' ), 250);
//投稿者のプロフィール情報を取得
$author_profile = get_the_author_meta('description')
?>
//投稿者のアバターを表示
<?php
echo $author_avatar;
?>
//プロフィールの表示
//投稿者名を表示
<?php
$span = "<span style='font-weight: bold; display: inline-block; width: 100%; text-align: center; margin-top:1.5em;'> $author </span>";
echo $span;
?>
//投稿者のプロフィール情報を表示
<?php
$profile = "<span style='display: inline-block;margin-top:1em;'> $author_profile </span>";
echo $profile;
?>
これで表示に使うPHPファイルが完成しました。
細かい装飾についてはstyle部分で編集してください。
スポンサーリンク
ウィジェットでPHPが動くようにする
ウィジェットでPHPが動くようにするため、functions.phpに追記。
これに関しては以下のサイトを参考にさせていただきました。
WordPress でプラグイン使わずにウィジェットで PHP コード動かす
functions.phpはやらかすとサイトがぶっ壊れますので必ずバックアップを取ってからいじりましょう。
widgets-author.phpがウィジェットで動くように以下をfunctions.phpに加える。
add_filter( 'widget_text', function( $ret ) {
$php_file = 'widgets-author';
if( strpos( $ret, '[' . $php_file . ']' ) !== false ) {
add_shortcode( $php_file, function() use ( $php_file ) {
get_template_part( $php_file );
});
ob_start();
do_shortcode( '[' . $php_file . ']' );
$ret = ob_get_clean();
}
return $ret;
}, 99 );
これでウィジェットでPHPが動くようになりました。
ウィジェットにプロフィールを追加
テキストウィジェットに以下のように追加してください。

ウィジェットに表示させたいタイトルと、phpファイルの名前だけ書けばOKです。
これで完成です!!
記事ページでそれぞれの投稿者のプロフィールが表示されていると思います。
スポンサーリンク