get_avatar()(獲取頭像)
get_avatar() 函數用來獲取置頂郵箱或者用戶的頭像代碼,在評論列表中非常常用。
這個函數提供一個 get_avatar 過濾器,用來過濾頭像的 Html 代碼(img 標簽)。
如果在后臺 “設置” 的 “討論” 里關閉 “顯示頭像選項” 則返回 False.
用法
1
|
|
get_avatar( $id_or_email , $size , $default , $alt ); |
參數
$id_or_email
(整數 | 字符串 | 對象)(必須)用戶的 ID;郵箱;評論或者用戶的對象。如果在循環中可以使用 get_the_author_meta( 'ID' ) 函數調用當前文章的作者。
默認值:None
$size
(整數)(可選)頭像的尺寸,最大為 512,單位為像素(px)。
默認值:96
get_avatar()(獲取頭像)
$default
(字符串)(可選)如果沒有頭像返回的圖片,默認為 “神秘人”,可以是圖片 URL.
默認值:空字符串(神秘人)
$alt
(字符串)(可選)頭像 img 標簽的 alt 屬性內容。
默認值:False
返回值
(字符串 | 布爾)返回一個頭像的 img 標簽,如果在后臺 “設置” 的 “討論” 里關閉 “顯示頭像選項” 則返回 False.
例子
評論列表:
1
|
|
<?php echo get_avatar( $GLOBALS [ 'comment' ] ); ?> |
循環,獲取當前文章作者頭像:
1
|
|
<?php echo get_avatar( get_the_author_meta( 'ID' ), 32 ); ?> |
自定義郵箱:
1
|
|
<?php echo get_avatar( 'email@example.com' , 32, '' , '自定義郵箱' ); ?> |
自定義頭像圖片的 alt 標簽
WordPress 默認使用的是 Gravatar 頭像,通過 get_avatar() 函數調用,一般用來在調用評論的時候使用。
利用 get_avatar() 函數的第四個屬性 $alt 可以設置返回代碼的 alt 標簽,但是大多數人在使用的時候都不會去設置,也就變成了空白。
搜索引擎的爬蟲是無法讀取圖片上到底是什么內容的,只能靠它的 alt 標簽,沒有了 alt 標簽的圖片,對 SEO 是非常不好的。
如果想要給所有的頭像都統一加上一個 alt 標簽,可以把下邊的代碼放到主題的 functions.php(了解更多) 文件。
1
|
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/** *WordPress 自定義頭像圖片的 alt 標簽 *根據不同的人生成不同的 alt 標簽 * http://www.endskin.com/avatar-alt/ */ function Bing_avatar_alt( $avatar ){ $alt = 'Gravatar 頭像' ; //alt 標簽的內容 $before = strpos ( $avatar , "alt='" ); $after = strpos ( $avatar , "'" , $before ); if ( $before === false || $after === false ) return $avatar ; $alt = esc_attr( $alt ); return substr ( $avatar , 0, $before ) . "alt='$alt" . substr ( $avatar , $after + strlen ( "'" ) ); } add_filter( 'get_avatar' , 'Bing_avatar_alt' ); |
這樣就行了,注意修改代碼里的 $alt 變量為你要修改成的 alt 標簽內容。
根據不同的人生成不同的 alt 標簽
如果要根據不同的人放置不同的 alt 標簽可以用下邊的例子代碼:
1
|
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
/** *WordPress 自定義頭像圖片的 alt 標簽 * http://www.endskin.com/avatar-alt/ */ function Bing_avatar_alt( $avatar , $id_or_email ){ if ( $id_or_email == 'bingoblog@163.com' || $id_or_email === 1 ){ $alt = '博主 Gravatar 頭像' ; //博主的 alt 標簽內容 } else { $alt = 'Gravatar 頭像' ; //普通訪客的 alt 標簽內容 } $before = strpos ( $avatar , "alt='" ); $after = strpos ( $avatar , "'" , $before ); if ( $before === false || $after === false ) return $avatar ; $alt = esc_attr( $alt ); return substr ( $avatar , 0, $before ) . "alt='$alt" . substr ( $avatar , $after + strlen ( "'" ) ); } add_filter( 'get_avatar' , 'Bing_avatar_alt' , 10, 2 ); |
如果已經設置 alt 標簽則不替換
如果你需要在已經設置 alt 標簽的內容(get_avatar() 函數的 $alt 屬性)則不替換的時候可以用下邊的代碼:
1
|
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
/** *WordPress 自定義頭像圖片的 alt 標簽 *如果已經設置 alt 標簽則不替換 * http://www.endskin.com/avatar-alt/ */ function Bing_avatar_alt( $avatar , $id_or_email , $size , $default , $alt ){ if ( ! empty ( $alt ) ) return $avatar ; $alt = 'Gravatar 頭像' ; //alt 標簽的內容 $before = strpos ( $avatar , "alt='" ); $after = strpos ( $avatar , "'" , $before ); if ( $before === false || $after === false ) return $avatar ; $alt = esc_attr( $alt ); return substr ( $avatar , 0, $before ) . "alt='$alt" . substr ( $avatar , $after + strlen ( "'" ) ); } add_filter( 'get_avatar' , 'Bing_avatar_alt' , 10, 5 ); |