2017-02-06 3 views
0

Как получить случайные изображения из/темы/mythemes/gravatar /? Я помещаю все изображения в этот каталог, но ничего не происходит.random gravatar on wordpress

Содержимое, относящееся к содержимому, влияет на код? или мне нужно переименовать все изображения в форматированное имя?

я использую этот код:

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

Итак, что отображается на экране? Какую отладку вы сделали? Вы знаете, как включить отладку Wordpress? Вы сделали var_dumping переменных? Каков результат? – vlasits

ответ

0

Есть несколько возможных причин этот код может потерпеть неудачу, но, скорее всего, является то, что $ папка является неправильной.

Wordpress предоставляет функцию get_stylsheet_directory() для разработчиков, чтобы использовать путь к файловой системе в каталоге тем. Для начала вы обязательно должны использовать это, чтобы найти свою папку gravatar.

+0

i используя WP_CONTENT_DIR на основе этой [link] (https://codex.wordpress.org/Determining_Plugin_and_Content_Directories), но get_stylsheet_directory() также возвращает такое же значение. – Areha

Смежные вопросы