【问题标题】:random gravatar on wordpresswordpress 上的随机头像
【发布时间】:2017-02-06 16:16:21
【问题描述】:

如何从 /themes/mythemes/gravatar/ 获取随机图像? 我将所有图像都放在该目录中,但没有任何反应。

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

我使用这个代码:

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;}

【问题讨论】:

  • 那么,屏幕上会显示什么?你做了什么调试?你知道如何打开 Wordpress 调试吗?您是否对变量进行了任何 var_dumping?输出是什么?

标签: wordpress gravatar


【解决方案1】:

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

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

【讨论】:

  • 我使用 WP_CONTENT_DIR 基于此 link ,但 get_stylsheet_directory() 也返回相同的值。
猜你喜欢
  • 1970-01-01
  • 2021-09-24
  • 2013-06-21
  • 2021-11-03
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 2012-12-14
相关资源
最近更新 更多