2013-01-08 2 views
0

그래서 다른 사람이 작성한 스크립트를 사용하고 있습니다. Wordpress 사이트.내 WordPress 사이트에서 아바타 위치가 변경되는 데 문제가 발생했습니다.

mysite.com/wp-content/themes/theme_name/images/avatar/avatarnamehere20.jpg 

하려면 :

내가 기본 업로드 위치를 변경하려면

코드 업로드를 처리합니다 어쨌든

mysite.com/images/avatar/avatarnamehere20.jpg 

를,이 첫 번째 시나리오의 작업 코드

if(isset($_FILES['image'])) 
     $avatar = $_FILES['image']; 
$save_to = "/images/avatar"; 

    $logo_results = tgt_resize_image($avatar['tmp_name'] ,$save_to,150,150,$avatar['type'], get_the_author_meta('display_name', $user_ID)); 
     if ($logo_results === false) 
     { 
      global $errors; 
      $errors .= __("Error: We can't upload your avatar", 'ad')."<br>"; 
     } 
     else{ 
      $avatar = get_user_meta($user_ID,'tgt_image',true); 
      if(file_exists(TEMPLATEPATH . $avatar) && $avatar != '/images/avatar.png') 
    unlink(TEMPLATEPATH . $avatar); 
      $avatar = $logo_results; 
      update_user_meta($user_ID,'tgt_image',$avatar); 
     } 
,451,515,

기능 tgt_resize_image

function tgt_resize_image($ipath, $tdir, $twidth, $theight, $image_type, $name_image){ 
try{ 
    $simg = ''; 
    //check image type 
    $type_arr = array('image/jpg', 'image/jpeg', 'image/pjpeg'); 
    if (in_array($image_type, $type_arr)) 
    { 
     $simg = imagecreatefromjpeg($ipath); 
    } 
    elseif($image_type == 'image/png'){ 
     $simg = imagecreatefrompng($ipath); 
    } 
    elseif($image_type == 'image/gif'){ 
     $simg = imagecreatefromgif($ipath); 
    } 
    else return false; 

    $currwidth = imagesx($simg); // Current Image Width 
    $currheight = imagesy($simg); 
    /* if ($twidth == 0) $twidth = $currwidth; 
    if ($theight == 0) $theight = $theight;*/ 

    $dimg = imageCreateTrueColor($twidth, $theight); // Make New Image For Thumbnail 

    $name_image .= rand(1, 100); 
    $name_image = sanitize_file_name($name_image); 


/*if($image_type == IMAGETYPE_GIF) { 
imagealphablending($dimg, false); 
imagesavealpha($dimg,true); 
$transparent = imagecolorallocatealpha($dimg, 255, 255, 255, 127); 
imagefilledrectangle($dimg, 0, 0, $twidth, $theight, $transparent); 
imagecolortransparent ($dimg, $transparent); 
} elseif($image_type == IMAGETYPE_PNG) { 
// These parameters are required for handling PNG files. 
imagealphablending($dimg, false); 
imagesavealpha($dimg,true); 
$transparent = imagecolorallocatealpha($dimg, 255, 255, 255, 127); 
imagefilledrectangle($dimg, 0, 0, $twidth, $theight, $transparent); 
}*/ 

    imagecopyresampled ($dimg, $simg, 0, 0, 0, 0, $twidth, $theight, $currwidth, $currheight); 
    //imagecopyresized($dimg, $simg, 0, 0, 0, 0, $twidth, $theight, $currwidth, $currheight); // Copy Resized Image To The New Image (So We Can Save It) 
    // imagejpeg($dimg, TEMPLATEPATH . "$tdir/" . $name_image . '.jpg'); // Saving The Image 
    $link = $tdir . '/' . $name_image; 
    if (in_array($image_type, $type_arr)) 
    { 
     imagejpeg($dimg, TEMPLATEPATH . "$tdir/" . $name_image . '.jpg'); 
     $link .= '.jpg'; 
    } 
    elseif($image_type == 'image/png'){ 
     imagepng($dimg, TEMPLATEPATH . "$tdir/" . $name_image . '.png'); 
     $link .= '.png'; 
    } 
    elseif($image_type == 'image/gif'){ 
     imagegif($dimg, TEMPLATEPATH . "$tdir/" . $name_image . '.gif'); 
     $link .= '.gif'; 
    } 
} 
catch (exception $e){ 
    imagedestroy($simg); // Destroying The Temporary Image 
    imagedestroy($dimg); // Destroying The Other Temporary Image 
    return false; 
} 

imagedestroy($simg); // Destroying The Temporary Image 
imagedestroy($dimg); // Destroying The Other Temporary Image 
return $link; 

// wp_attachment_is_image() 
} 

나는 코드를 변경에서 몇 가지 시도를했다. 나는 mysql feild를 제대로 업데이트 할 수 있었지만 파일은 전혀 업로드되지 않았다. 따라서 페이지는 이미지를 표시하려고 시도하지만 존재하지 않습니다.

이 내가 가진 무엇을 다음 tgt_resize_image 기능에서

if(isset($_FILES['image'])) 
     $avatar = $_FILES['image']; 
    //$save_to = "/images/avatar"; 
    $save_to = site_url('/') . 'images/avatar'; 

    $logo_results = tgt_resize_image($avatar['tmp_name'] ,$save_to,150,150,$avatar['type'], get_the_author_meta('display_name', $user_ID)); 
     if ($logo_results === false) 
     { 
      global $errors; 
      $errors .= __("Error: We can't upload your avatar", 'ad')."<br>"; 
     } 
     else{ 
      $avatar = get_user_meta($user_ID,'tgt_image',true); 
      if(file_exists(site_url('/') . $avatar) && $avatar != '/images/avatar.png') 
    unlink(site_url('/') . $avatar); 
      $avatar = $logo_results; 
      update_user_meta($user_ID,'tgt_image',$avatar); 
     } 

//wp_redirect(get_bloginfo('url').'/?author='.$current_user->ID); 
wp_redirect(get_author_posts_url($user_ID)); 
    exit; 

, 나는 SITE_URL에 TEMPLATEPATH를 변경 ('/')하지만, 작동하지 않았다.

도움을 주시면 감사하겠습니다. 나는 이것이 절망적 이도록 도와주는 사람에게 보상 할 것이다!

어디서나 더 많은 정보 나 코드가 필요하면 알려주세요.

다시 한번 감사드립니다!

답변

0

좋아, 답변을 찾았습니다! 기능에

: tgt_resize_image

imagejpeg, imagepng 및 imagegif 이미지 파일을 저장했다.

TEMPLATEPATH가 WP 템플릿 위치를 가리키고 있습니다.

site_url()을 사용하면 웹 위치 (mysite.com)를 가리키는 것처럼 작동하지 않습니다.

TEMPLATEPATH를 $ _SERVER [ 'DOCUMENT_ROOT'] (으)로 대체해야만 정상적으로 작동합니다.

행운을 빈다.

관련 문제