2017-02-06 6 views
0

wie man zufällige Bilder von/themes/mythemes/gravatar/erhält? Ich lege alle Bilder in dieses Verzeichnis, aber nichts passiert.zufälliger Gravatar auf wordpress

beeinflusst der Inhaltsbereich den Code? oder sollte ich alle Bilder in formatierte Namen umbenennen?

ich verwende diesen Code:

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

Also, was zeigt sich auf dem Bildschirm? Welches Debugging hast du gemacht? Weißt du, wie man Wordpress Debugging aktiviert? Haben Sie var_dumping von Variablen durchgeführt? Was ist die Ausgabe? – vlasits

Antwort

0

Es gibt mehrere mögliche Gründe könnte dieser Code scheitern, aber die wahrscheinlichste ist, dass $ Ordner falsch ist.

Wordpress bietet die get_stylsheet_directory()-Funktion für Entwickler, um den Dateisystempfad zum Themenverzeichnis zu verwenden. Für den Anfang sollten Sie das auf jeden Fall verwenden, um Ihren Gravatar-Ordner zu finden.

+0

Ich benutze WP_CONTENT_DIR basierend auf dieser [link] (https://codex.wordpress.org/Determining_Plugin_and_Content_Directories), aber get_stylsheet_directory() gibt auch denselben Wert zurück. – Areha