正文索引 [隐藏]

问题

我使用的Memory主题,在添加友链时无法自定义头像

作者的介绍,只能在备注里填写邮箱地址来调用gravatar头像

这样就很不合适,因为不是每个人都用gravatar,而且添加的也不一定是友链

然后我看了下友链页面的代码后,不过因为我不会php,所以只能按着原来的代码来改,结果给我改成功了

原始代码

只截取了核心部分

<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

修改后代码

只截取了核心部分

<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判断,判断图像地址是否为空。如果不为空就输出图像地址,为空就输出默认图片。

所以优先级是

  1. 如果在高级->备注中填写了友链的邮箱地址,则默认使用其gravatar头像;
  2. 如果在高级->图像地址中填写了友链的图像地址,则使用其提供的图像地址作为图像来源。
  3. 如果上面两项均未填写,则使用默认图片。