问题
本博客目前使用的Memory主题,在添加友链时无法自定义头像。
据作者的介绍只能在备注里填写邮箱地址来调用gravatar头像。
这样就很不合适,因为不是每个人都用gravatar,而且添加的也不一定是友链。
然后我看了下友链页面的代码后,不过因为我不会php,所以只能按着原来的代码来边猜边改。
原代码
只截取了核心部分
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| <ul>
<?php $bookmarks = get_bookmarks('orderby=rand&category_name=' . $linkcat->name);
if ( !empty($bookmarks) ) {
foreach ($bookmarks as $bookmark) {
echo '<li><a class="no-des" href="' . $bookmark->link_url . '" title="' . $bookmark->link_name . '">';
if($bookmark->link_notes!=null && $bookmark->link_notes!='')
echo '<img src="'.get_avatar_url($bookmark->link_notes).'" alt="'.$bookmark->link_name.'" class="avatar" / >';
else
echo '<img src="'.get_template_directory_uri().'/img/comment-avatar.png" alt="'.$bookmark->link_name.'" class="avatar" / >';
echo '<div class="link-text"><span class="link-title">'.$bookmark->link_name.'</span><p class="link-description">'.$bookmark->link_description.'</p></div>';
echo '</a></li>';
}
} ?>
</ul>
|
逻辑大概就是先判断备注是否为空,如果不为空就获取avatar头像后输出,就像作者所说的。
如果为空就输出默认图片comment-avatar.png
修改
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| <ul>
<?php $bookmarks = get_bookmarks('orderby=rand&category_name=' . $linkcat->name);
if ( !empty($bookmarks) ) {
foreach ($bookmarks as $bookmark) {
echo '<li><a class="no-des" href="' . $bookmark->link_url . '" title="' . $bookmark->link_name . '">';
if($bookmark->link_notes!=null && $bookmark->link_notes!='')
echo '<img src="'.get_avatar_url($bookmark->link_notes).'" alt="'.$bookmark->link_name.'" class="avatar" / >';
elseif($bookmark->link_image!=null && $bookmark->link_image!='')
echo '<img src="'.$bookmark->link_image.'" alt="'.$bookmark->link_name.'" class="avatar" / >';
else
echo '<img src="'.get_template_directory_uri().'/img/comment-avatar.png" alt="'.$bookmark->link_name.'" class="avatar" / >';
echo '<div class="link-text"><span class="link-title">'.$bookmark->link_name.'</span><p class="link-description">'.$bookmark->link_description.'</p></div>';
echo '</a></li>';
}
} ?>
</ul>
|
思路
在输出默认图片前再加一个elseif判断,判断图像地址是否为空。如果不为空就输出图像地址,为空就输出默认图片。
优先级如下:
- 如果在高级->备注中填写了友链的邮箱地址,则默认使用其gravatar头像;
- 如果在高级->图像地址中填写了友链的图像地址,则使用其提供的图像地址作为图像来源。
- 如果上面两项均未填写,则使用默认图片。