解决wordpress主题 Sakura by Mashiro中出现的gravatar头像不显示问题

发布于 2020-02-04  168 次阅读


由于插件的不稳定,改用了本地缓存头像,这样的话右上角的账户头像也可以正常显示


以下方法可以解决海外访问问题,如果要对国内访问问题进行修正,可以使用插件wp加速,并且启用lazyload


首先我们打开主题下的functions.php
通过百度,找到了以下代码

// HackGravatatr
function wpyou_get_ssl_avatar($avatar) {
    $avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/','<img src="https://cdn.v2ex.com/gravatar/$1?s=$2" class="avatar avatar-$2" height="$2" width="$2">',$avatar);
    return $avatar;
}
add_filter('get_avatar', 'wpyou_get_ssl_avatar');

原理是使用https方式(SSL)调用Gravatar头像服务器地址,从而绕过对墙问题,白猫大大使用的Gravatar_cn也是绕过墙的问题,但可能是出了些问题或是lazyload出了问题
将上述代码插入到functions中
然后通过搜索gravatar或是在line 560左右找到

/*
 * Gravatar头像使用中国服务器
 */ 
function gravatar_cn( $url ){ 
    $gravatar_url = array('0.gravatar.com','1.gravatar.com','2.gravatar.com','secure.gravatar.com');
    return str_replace( $gravatar_url, 'gravatar.shino.cc', $url );
}
add_filter( 'get_avatar_url', 'gravatar_cn', 4 );.


/*
 * 自定义默认头像
 */
add_filter( 'avatar_defaults', 'mytheme_default_avatar' );

function mytheme_default_avatar ( $avatar_defaults ) {
    //$new_avatar_url = get_template_directory_uri() . '/images/default_avatar.png';
    $new_avatar_url = 'https://cn.gravatar.com/avatar/b745710ae6b0ce9dfb13f5b7c0956be1';
    $avatar_defaults[$new_avatar_url] = 'Default Avatar';
    return $avatar_defaults;
}

将其注释掉
最后通过搜索https://cdn.jsdelivr.net/gh/moezx/cdn@3.0.1/img/svg/loader/index.ajax-spinner-preloader.svg
或是在line 362找到以COMMENT FORMATTING注释开头的代码
按照注释中说的,将其替换为,也就是不进行延时

/**
 * COMMENT FORMATTING
 *
 * 标准的 lazyload 输出头像
 * <?php echo str_replace( 'src=', 'src="https://cdn.jsdelivr.net/gh/moezx/cdn@3.0.1/img/svg/loader/index.ajax-spinner-preloader.svg" onerror="imgError(this,1)" data-src=', get_avatar( $comment->comment_author_email, '80', '', get_comment_author(), array( 'class' => array( 'lazyload' ) ) ) ); ?>
 *
 * 如果不延时是这样的
 * <?php echo get_avatar( $comment->comment_author_email, '80', '', get_comment_author() ); ?>
 *
 */
if(!function_exists('akina_comment_format')){
    function akina_comment_format($comment, $args, $depth){
        $GLOBALS['comment'] = $comment;
        ?>
        <li <?php comment_class(); ?> id="comment-<?php echo esc_attr(comment_ID()); ?>">
            <div class="contents">
                <div class="comment-arrow">
                    <div class="main shadow">
                        <div class="profile">
                            <a href="<?php comment_author_url(); ?>" target="_blank" rel="nofollow"><?php echo get_avatar( $comment->comment_author_email, '80', '', get_comment_author() ); ?></a>
                        </div>
                        <div class="commentinfo">
                            <section class="commeta">
                                <div class="left">
                                    <h4 class="author"><a href="<?php comment_author_url(); ?>" target="_blank" rel="nofollow"><?php echo get_avatar( $comment->comment_author_email, '24', '', get_comment_author() ); ?><span class="bb-comment isauthor" title="中央钦定的<?php #esc_attr_e('Author', 'akina'); ?>">博主</span> <?php comment_author(); ?> <?php echo get_author_class($comment->comment_author_email,$comment->user_id); ?></a></h4>
                                </div>
                                <?php comment_reply_link(array_merge($args, array('depth' => $depth, 'max_depth' => $args['max_depth']))); ?>
                                <div class="right">
                                    <div class="info"><time datetime="<?php comment_date('Y-m-d'); ?>"><?php echo poi_time_since(strtotime($comment->comment_date_gmt), true );//comment_date(get_option('date_format')); ?></time><?php echo siren_get_useragent($comment->comment_agent); ?><?php echo mobile_get_useragent_icon($comment->comment_agent); ?> 来自: <?php echo convertip(get_comment_author_ip()); ?>
                                        <?php if (current_user_can('manage_options') and (wp_is_mobile() == false) ) {
                                            $comment_ID = $comment->comment_ID;
                                            $i_private = get_comment_meta($comment_ID, '_private', true);
                                            $flag .= ' <i class="fa fa-snowflake-o" aria-hidden="true"></i> 状态: <a href="javascript:;" data-actionp="set_private" data-idp="' . get_comment_id() . '" id="sp" class="sm" style="color:rgba(0,0,0,.35)">私密(<span class="has_set_private">';
                                            if (!empty($i_private)) {
                                                $flag .= '是 <i class="fa fa-lock" aria-hidden="true"></i>';
                                            } else {
                                                $flag .= '否 <i class="fa fa-unlock" aria-hidden="true"></i>';
                                            }
                                            $flag .= '</span>)</a>';
                                            $flag .= edit_comment_link(__('<i class="fa fa-pencil-square-o" aria-hidden="true"></i> 编辑'), '<span>', '</span>');
                                            echo $flag;
                                        } ?></div>
                                </div>
                            </section>
                        </div>
                        <div class="body">
                            <?php comment_text(); ?>
                        </div>
                    </div>
                    <div class="arrow-left"></div>
                </div>
            </div>
            <hr>
        <?php
    }
}

上面这个{1}是显示问题,不存在
大功告成
如果有更简便的方法可以进行分享


「雪霁融雾月,冰消凝夜雨」