首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wordpress上的随机gravatar

wordpress上的随机gravatar
EN

Stack Overflow用户
提问于 2017-02-07 00:16:22
回答 1查看 210关注 0票数 0

如何从/themes/mythemes/gravatar/中获取随机图片?我把所有的图片都放在那个目录下,但是什么也没发生。

内容目录会影响代码吗?或者我应该将所有图像重命名为格式化名称?

我使用以下代码:

代码语言:javascript
复制
function get_images($folder) {

// Space seperated list of extensions, you probably won't have to change this.
$exts = 'jpg jpeg png gif';

$str = ''; $i = -1; // Initialize some variables
if ('' == $folder) $folder = './';

$handle = opendir($folder);
$exts = explode(' ', $exts);
while (false !== ($file = readdir($handle))) {
    foreach($exts as $ext) { // for each extension check the extension
        if (preg_match('/\.'.$ext.'$/i', $file, $test)) { // faster than ereg, case insensitive
            $str .= $file;
            if ($str) $str .= '|';
            ++$i;
        }
    }
}
closedir($handle); // We're not using it anymore
return $str; }

function get_gravatar_images() {
// Get all gravatar images
$str = get_theme_mod('gravatar_img', FALSE);
if ($str !== FALSE) return $str;

$dir = WP_CONTENT_DIR . '/themes/Megumichanz/gravatar/';
if (is_dir($dir)) {
    $str = get_images($dir); 
} else {
    return '';
}       

set_theme_mod('gravatar_img', $str);
return $str;}
function get_my_avatar($comment, $dim) {
static $gravatar_img = NULL;

$img_uri = get_avatar($comment, $dim);
$uri = substring($img_uri, "src='", "s=");
$headers = wp_get_http_headers($uri . "d=404");

// Check the headers
if (!is_array($headers)) :
    $has_valid_avatar = FALSE;
elseif (isset($headers["content-disposition"]) ) :
    $has_valid_avatar = TRUE;
else :
    $has_valid_avatar = FALSE;
endif;

if ($has_valid_avatar) return $img_uri;

// Not valid avatar - return a default based on IP
$img_num = intval($comment->comment_author_email);
if (!$gravatar_img) {
    $gravatar_img = get_gravatar_images();
    if (!$gravatar_img) return $img_uri;

    $gravatar_img = explode('|', $gravatar_img);
}
$img_count = count($gravatar_img);
$index = abs($img_num % $img_count);

// Construct new image http
$img_uri = "<img src='" . get_bloginfo('template_url') . '/gravatar/' . $gravatar_img[$index] . "' width='" . $dim . "' height='" . $dim . "' />";
return $img_uri;}
EN

回答 1

Stack Overflow用户

发布于 2017-02-07 04:58:38

这段代码可能失败的原因有几种,但最有可能的原因是$folder错误。

Wordpress提供了get_stylsheet_directory()函数,开发者可以使用它来获取主题目录的文件系统路径。对于初学者来说,你绝对应该用它来找到你的gravatar文件夹。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42072400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档