サンゴのバグ修正、著者ページで投稿がないとアバターやプロフィールが表示されない
そのユーザー(著者)の投稿した記事があれば、記事一覧の上に、アバターの写真とユーザー名、プロフィールの詳細が表示されるが…

投稿した記事がない場合は、アバターもデフォルトのものになるし、プロフィールの詳細が表示されない…

修正するファイル
wp-content/themes/sango-theme/parts/archive に入っている
archive-header.php
がこれにあたる。
これを同じ階層で子テーマにコピペで突っ込む。
修正する箇所
元の4行目あたり
<p class="author_page_img">
<?php
//著者画像
$iconimg = get_avatar( get_the_author_meta( 'ID' ), 125 );
if($iconimg) echo $iconimg;
?>
</p>
|
↓↓↓
<p class="author_page_img">
<?php
//著者画像
$iconimg = get_avatar( get_the_author_meta('ID',$author) );
if($iconimg) echo $iconimg;
?>
</p>
|
get_avatar( get_the_author_meta( ‘ID’ ), 125 );
だと、その記事の著者になってしまうので、
$iconimg = get_avatar( get_the_author_meta(‘ID’,$author) );
として、そのURL author/userID の userID 部分の人のアバターを取得するように変更。
次にプロフィールの詳細の部分で、記事投稿がない場合には、別途プロフィールの詳細を表示させる。(投稿がある場合は、従来のSANGOのテンプレのものがそのまま表示される)
<h1 class="dfont">
<?php echo esc_attr(get_the_author_meta('display_name',$author)); ?> <?php fa_tag("check-circle","check-circle",false) ?>
</h1>
<?php else : //著者ページ以外?>
<h1>
<?php
if( output_archive_title() ){
|
↓↓↓
<h1 class="dfont">
<?php echo esc_attr(get_the_author_meta('display_name',$author)); ?> <?php fa_tag("check-circle","check-circle",false) ?>
</h1>
<?php
if( !have_posts() ) { //投稿がない場合以下を実行
echo '<div class="taxonomy-description entry-content">'.strip_tags(get_the_author_meta( 'description', get_the_author_meta('ID',$author) )).'</div>'; // プロフィールの詳細を表示
}
?>
<?php else : //著者ページ以外?>
<h1>
<?php
if( output_archive_title() ){
|
これで、記事がなくてもプロフィールアバターとプロフィールの詳細が表示される。

自分が、人の記事に書いたコメントだけをまとめて表示するページを作る
WordPressのSNSプラグイン、BuddyPressを導入しサンゴのテーマで運用する。
肩書き(入力するとプロフィールに表示)という欄があるのだが、これを出身地にしてみる。
地域コミュニティSNSなので。
functions.php へ記述
・管理画面のプロフィールで、sangoによる追加項目を一旦削除
で紹介した通り、子テーマ → 親テーマ の順で functions.php が適用されるので、まずsangoによる追加項目を一旦削除してからの追加とすること。
//プロフィールの肩書の部分を出身地に変更
function yuya_add_profile($user_contactmethods)
{
return array(
'yourtitle' => '出身地',
'twitter' => 'TwitterのURL',
'facebook' => 'FacebookのURL',
'instagram' => 'InstagramのURL',
'feedly' => 'FeedlyのURL',
'youtube' => 'YouTubeのURL',
'line' => 'LINEのURL',
);
}
add_filter('user_contactmethods', 'yuya_add_profile');
|
ついでに
管理画面のプロフィールでいらないものを消す方法
//管理画面のプロフィールでいらない部分を消す
function user_profile_hide_style() {
echo '<style>
#your-profile .user-rich-editing-wrap, /* ビジュアルエディター */
#your-profile .user-comment-shortcuts-wrap, /* キーボードショートカット */
#your-profile .show-admin-bar, /* ツールバー */
#your-profile .user-first-name-wrap, /* 名 */
#your-profile .user-last-name-wrap, /* 姓 */
//#your-profile .user-profile-picture, /* プロフィール写真 */
#your-profile .user-sessions-wrap /* セッション */ {
display: none;
}
</style>'.PHP_EOL;
}
add_action('admin_print_styles', 'user_profile_hide_style');
|
頭に「//」がついている場合は、コメントアウトされて非表示にならないので、上のコードで、例えば「コメント」も非表示にしたい場合は、
頭の
//#your-profile .user-profile-picture, /* プロフィール写真 */
|
の//を消しておく。
管理画面のプロフィールで、sangoによる追加項目を一旦削除
WordPressの管理画面のプロフィールで、親テーマによって追加される項目を削除したい。
remove_filter('user_contactmethods', 'add_user_contactmethods');
|
でフィルターフックを削除できるのだが、
functions.phpに記述したものは、子テーマ → 親テーマ の順で適用される。
子テーマでいくら remove_filter しても、親テーマで上書き add_filter されてしまうので、効果がない。
親テーマの後に remove する必要がある。
functions.php へ記述
add_action( 'after_setup_theme', '' );
|
にフックすると、テーマの読み込み後(つまり、親テーマのfunctions.php後)に処理してくれる。
//管理画面のプロフィールのsangoの追加項目を一旦削除
function remove_sango_add_user_contactmethods()
{
remove_filter('user_contactmethods', 'add_user_contactmethods');
}
add_action( 'after_setup_theme', 'remove_sango_add_user_contactmethods' );
|
これで、OK
明日試したくなるカスタマイズ、ネットな日々に役立つ小技と、たまに旅行の妄想と。