Thay thế cho việc sử dụng hàm get_avatar?


7

Tôi đã sử dụng hack WP để hiển thị các bức ảnh của tác giả. Ví dụ, single.php của tôi có một tác giả sên hiển thị ảnh của tác giả.

Tôi đã tạo một thư mục có tên tác giả trong thư mục chủ đề / hình ảnh của tôi. Dựa trên ID của tác giả, tôi đặt tên cho tệp 1.jpg, 2.jpg, v.v.

Vì vậy, tôi gọi hình ảnh này là

<img src="<?php bloginfo('template_directory') ?>/images/authors/<?php the_author_ID()?>.jpg" alt="<?php the_author(); ?>">

Bây giờ tôi đang sửa đổi một plugin hiển thị các tác giả trong thanh bên. Tuy nhiên, plugin này sử dụng hàm get_avatar, như sau:

/**
                 * If show avatar option is checked, add get_avatar function to cache.
                 */
                if($jmetc_options['show_avatar'] == 1) {
                    $jmevar['cache'] .= get_avatar($tc->comment_author_email, $jmetc_options['avatar_size']);
                }

Ai đó có thể tư vấn cho tôi về cách sử dụng / sửa đổi get_avatar để sử dụng mã mặc định mà tôi sử dụng không?


Cảm ơn vì tiền boa .. tôi nhận được một điều bất ngờ '.' lỗi trong chức năng mặc dù
Sledge81

Ok, đã phải loại bỏ; sau get_template_uri .. vì vậy bây giờ nó đã được sửa .. vẫn không thể thấy các thay đổi được thực hiện. Tôi đã sử dụng apply_filters('get_avatar', $avatar, $id_or_email, $size, $default, $alt);thay thế bằng get_avatar ($ tc, v.v.
Sledge81

Bạn nên bình luận trong câu trả lời của tôi , vì vậy tôi nhận được thông báo khi bạn bình luận. :)
Chip Bennett

Câu trả lời:


10

Các get_avatar()chức năng áp dụng một get_avatarmóc lọc, mà bạn có thể sử dụng để thay đổi avatar đánh dấu:

return apply_filters('get_avatar', $avatar, $id_or_email, $size, $default, $alt);

Tôi nghĩ rằng đây sẽ là cách chính xác để nối vào bộ lọc này:

function mytheme_get_avatar( $avatar ) {
    $avatar = '<img src="<' . get_template_directory_uri() . '/images/authors/' . get_the_author_ID() . '.jpg" alt="' . get_the_author() . '">';
    return $avatar;
}
add_filter( 'get_avatar', 'mytheme_get_avatar' );

BIÊN TẬP

Một lựa chọn tốt cho phương pháp này có thể là Plugin Local Local Avatars .

CHỈNH SỬA 2

Bộ lọc được áp dụng bằng cách sử dụng add_filter(), không apply_filters(). Đó là một lỗi đánh máy từ phía tôi; sửa ngay!

EDIT 3

Tôi không nghĩ rằng điều này là chính xác:

PS: Chỉ cần làm rõ .. Tôi đã thay thế get_avatar($tc->comment_author_email, $jmetc_options['avatar_size']); bằngadd_filter('get_avatar', $avatar, $id_or_email, $size, $default, $alt);

Đầu tiên, bạn vẫn gọi get_avatar()trong tệp mẫu của mình, chuyển tất cả các tham số giống như trước. Cuộc add_filter()gọi thuộc về functions.php.

Thứ hai, bạn có thể truyền các tham số bổ sung cho chức năng lọc của mình; ví dụ:

function mytheme_get_avatar( $avatar, $id_or_email, $size ) {
    $avatar = '<img src="<' . get_template_directory_uri() . '/images/authors/' . $id_or_email . '.jpg" alt="' . get_the_author() . '" width="' . $size . 'px" height="' . $size . 'px" />';
    return $avatar;
}
add_filter( 'get_avatar', 'mytheme_get_avatar', 10, 3 );

Rất tiếc! Cập nhật mã để sửa một vài vấn đề nhỏ. Tôi thực sự phải học cách không viết mã trước khi uống cà phê buổi sáng của mình ...
Chip Bennett

Vì vậy, tôi đã thay thế application_filters bằng add_filter nhưng không có gì thay đổi. Từ fireorms, url gravatar mặc định vẫn đang được kéo. <img width="60" height="60" class="avatar avatar-60 photo" src="http://1.gravatar.com/avatar/782b5a7a555f8147ac91d84c53e5dfa2?s=60&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D60&amp;r=G" alt="">
Sledge81

PS: Chỉ cần làm rõ .. Tôi đã thay thế get_avatar($tc->comment_author_email, $jmetc_options['avatar_size']);bằngadd_filter('get_avatar', $avatar, $id_or_email, $size, $default, $alt);
Sledge81

Xem câu trả lời cập nhật. Đảm bảo bạn vẫn đang gọi get_avatar()trong tệp mẫu của mình và chuyển các tham số cần thiết cho chức năng lọc của bạn.
Chip Bennett

1
@ChipBennet Bạn không cần phải nêu add_filter( 'get_avatar', 'mytheme_get_avatar', <whatever_priority>, 3 /* number of args! */ );ra để thực sự có được những lập luận đó?
Frank Nocke

0

Có một lỗi nhỏ trong chức năng trên

sử dụng tốt hơn thế này:

function mytheme_get_avatar( $avatar, $id_or_email, $size ) {
    $avatar = '<img src="' . get_template_directory_uri() . '/images/authors/' . $id_or_email . '.jpg" alt="' . get_the_author() . '" width="' . $size . 'px" height="' . $size . 'px" />';
    return $avatar;
}
add_filter( 'get_avatar', 'mytheme_get_avatar', 10, 3 );
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.