DIY मीडिया होम लोगो

अपनी खुद की होम थिएटर और हाय-Fi सेटअप डिजाइन और बनाने के लिए परम साइट.

0वर्डप्रेस स्थानीय Gravatar कैश

मैं लोगों के लिए दिखाया गया अवतारों अपने ब्लॉग पर टिप्पणी जो लेना पसंद. वर्डप्रेस का समर्थन करता है gravatar सेवा मूल रूप से इतना सक्षम करने के लिए यह बहुत आसान है. हालांकि यह एक लागत के साथ आता है - अन्य डोमेन से बाहरी फ़ाइलों तक पहुँचने नई के रूप में अतिरिक्त लोड समय की बहुत सारी कहते हैं डीएनएस लुकअप, नया एसएसएल कनेक्शन बनाने के लिए, आदि. Would­n’t it be nice to have gravatars stored loc­ally and served from your own serv­er. खैर कि क्या मैं अब कुछ समय के लिए कर रहा हूँ है, आप को पता है कि कैसे करना चाहते हैं तो, पढ़ते रहिये…

In case you’re still won­der­ing just why you’d want to do this, let me offer a few more bene­fits — images served loc­ally can be com­pressed before serving them, for example ‑all my images are con­ver­ted into webp ver­sions, and any browser which sup­ports webp gets the webp ver­sion. This is in addi­tion to the reduc­tion from not hav­ing to con­nect to an extern­al serv­er. The loc­al resources can also have a cach­ing head­er set on them so that browsers will cache them. Gravatar does­n’t provide for a very long cache time.

I have cre­ated 3 cus­tom func­tions, जो मैं बस अपना विषय के functions.php में जगह. The first is a cus­tom fil­ter for the nat­ive word­press get_avatar(). gravatar और गूगल से दूसरे पकड़ लेता है अवतारों जब आह्वान किया, and the third cre­ates a daily cronjob which refreshes the gravatars — in case they’ve been changed, or a pre­vi­ously unavail­able one is now available.

You will need to do a little bit of tinker­ing to make it com­pat­ible with your theme — I use the “bones” frame­work as you’ll notice in the 3तृतीय func­tion I’ve reused some code that it provided. You will also need to cre­ate, or cus­tom­ise the path to store the gravatars, which in my case are stored in the theme folder in the sub­path “/library/images/gravatars/”

/*********************************************\
* स्थानीय अवतारों केवल उपयोग करने के लिए get_avatar फ़िल्टर *
\*********************************************/
समारोह bones_gravatar($अवतार, $id_or_email, $आकार, $चूक, $alt)
{
$root_path = get_template_directory_uri() . '/ पुस्तकालय / images / Gravatars /';
$root_path_local = get_template_directory() . '/ पुस्तकालय / images / Gravatars /';
$gravatar_path = $ root_path . 'Default_avatar';
$gravatar_path_hidpi = 'डेटा-gravatar-HiDPI ="'। $ Root_path . 'Default_avatar-hidpi.png"';

//shamelessly reuse original code to get the e-mail address

$email = '';
अगर ( is_numeric($id_or_email) )
{
$आईडी = (पूर्णांक) $id_or_email;
$उपयोगकर्ता = get_userdata($आईडी);
अगर ( $उपयोगकर्ता ) $ईमेल = $ उपयोगकर्ता->user_email;
}
elseif ( is_object($id_or_email) )
{
// No avatar for pingbacks or trackbacks
$allowed_comment_types = apply_filters( 'Get_avatar_comment_types', सरणी( 'टिप्पणी' ) );
अगर ( ! खाली( $id_or_email->comment_type ) && ! in_array( $id_or_email->comment_type, (सरणी) $allowed_comment_types ) ) विवरण झूठा है;
अगर ( !खाली($id_or_email->यूज़र आईडी) )
{
$आईडी = (पूर्णांक) $id_or_email->यूज़र आईडी;
$उपयोगकर्ता = get_userdata($आईडी);
अगर ( $उपयोगकर्ता) $ईमेल = $ उपयोगकर्ता->user_email;
}
elseif ( !खाली($id_or_email->comment_author_email) )
{
$ईमेल = $ id_or_email->comment_author_email;
}
}
अन्य
{
$ईमेल = $ id_or_email;
}

अगर ( !खाली($ईमेल) )
{
$email_hash = md5( strtolower( ट्रिम( $ईमेल ) ) );
अगर(फाइल मौजूद है($root_path_local . $email_hash . '.png'))
{
//if we have a local cache then use it
$gravatar_path= $root_path . $email_hash ;
$gravatar_path_hidpi = 'डेटा-gravatar-HiDPI ="'। $ Root_path . $email_hash . '-hidpi.png"';
}
}
अगर($आकार >= 47) $अवतार = '<img वर्ग ="लोड gravatar अवतार अवतार - '। $ आकार।' तस्वीर" चौड़ाई ="'। $ आकार।'" ऊंचाई ="'। $ आकार।'" src ="' . $gravatar_path . '-hidpi.png" alt ="Gravatar" />';
बाकी $ अवतार = '<img वर्ग ="लोड gravatar अवतार अवतार - '। $ आकार।' तस्वीर" चौड़ाई ="'। $ आकार।'" ऊंचाई ="'। $ आकार।'" src ="' . $gravatar_path . '.png" alt ="Gravatar" ' . $gravatar_path_hidpi . '/>';

वापसी $ अवतार;
}

add_filter('Get_avatar', 'Bones_gravatar', 10, 5);






/***********************\
* gravatar कैश बनाएं *
\***********************/
समारोह grab_avatar($comment_id,$टिप्पणी,$= False ताज़ा,$ईमेल = '')
{
तुम सो जाओ(20);
$root_path = get_template_directory_uri() . '/ पुस्तकालय / images / Gravatars /';
$root_path_local = get_template_directory() . '/ पुस्तकालय / images / Gravatars /';
अगर($== झूठी ताज़ा) $img_name = md5( get_comment_author_email($comment_id) );
बाकी $ img_name md5 =( $ईमेल );
अगर(!फाइल मौजूद है($root_path_local . $img_name . '.png') || $== सच ताज़ा)
{
अगर($== झूठी ताज़ा) $bgauthemail = get_comment_author_email();
बाकी $ bgauthemail = $ ईमेल;
//try google first
$domain= explode("@",$bgauthemail);
अगर($डोमेन[1]=="gmail.com")
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, असत्य);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, सच);
curl_setopt($ch, CURLOPT_URL, "HTTPS के://picasaweb.google.com/data/entry/api/user/" . $bgauthemail . "?alt = json");
$परिणाम = curl_exec($ch);
curl_close($ch);

$obj = json_decode($परिणाम,सच);
$avatar_from_gmail = $ obj['प्रवेश']["Gphoto $ थंबनेल"]['$ टी'];

$विस्तार = strrchr($avatar_from_gmail, '।');

$ch = curl_init($avatar_from_gmail);
curl_setopt( $ch, CURLOPT_NOBODY, सच );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, असत्य );
curl_setopt( $ch, CURLOPT_HEADER, असत्य );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, सच );
curl_setopt( $ch, CURLOPT_MAXREDIRS, 3 );
curl_exec( $ch );
$हेडर = curl_getinfo( $ch );
curl_close( $ch );
अगर($हेडर['HTTP_CODE'] === 200)
{
$ch = curl_init($avatar_from_gmail);
$fp = fopen($root_path_local . $img_name . '-hidpi' . $विस्तार, 'पश्चिम बंगाल');
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla / 5.0 (Windows NT 6.1; Win64; x 64) AppleWebKit / 537.36 (KHTML, छिपकली की तरह) क्रोम / 39.0.2171.62 सफारी / 537.36 ');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);

fclose($fp);

$usegravatar = false;

$small_image = wp_get_image_editor($root_path_local . $img_name . '-hidpi' . $विस्तार);
अगर ( ! is_wp_error( $small_image ) )
{
//जाँच यह एक खाली आदमी छवि नहीं है, यदि ऐसा है तो, delete it
if (md5_file($root_path_local . $img_name . '-hidpi.jpg') == strtolower("686E5C46776BA0E5C488853C1C0B492C"))
{
//delete
unlink($root_path_local . $img_name . '-hidpi.jpg');
//try gravatar
$usegravatar=true;
}
बाकी अगर (md5_file($root_path_local . $img_name . '-hidpi.jpg') == strtolower("6D4083BE95FB32358A5110F5A83B9979"))
{
//delete
unlink($root_path_local . $img_name . '-hidpi.jpg');
//try gravatar
$usegravatar=true;
}
अन्य
{
//always convert to png because some plugins expect all gravatars to be pngs
$small_image->बचाना($root_path_local . $img_name . '-hidpi.png','छवि / png');
$small_image->आकार परिवर्तन(40, 40, सच);
$small_image->set_quality( 10 );
$small_image->बचाना($root_path_local . $img_name . '.png','छवि / png');
अगर($विस्तार ==".जेपीजी") उतारना($root_path_local . $img_name . '-hidpi.jpg');
}
}
}

}
//check e-mail isnt a blank generic one
else if($bgauthemail!=="noemail@intensedebate.com" || $usegravatar == सच)
{
$avatar_from_gravatar = "HTTPS के://www.gravatar.com/avatar/" . $img_name . "?एस = 80&d = 404";
$ch = curl_init($avatar_from_gravatar);
curl_setopt( $ch, CURLOPT_NOBODY, सच );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, असत्य );
curl_setopt( $ch, CURLOPT_HEADER, असत्य );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, सच );
curl_setopt( $ch, CURLOPT_MAXREDIRS, 3 );
curl_exec( $ch );
$हेडर = curl_getinfo( $ch );
curl_close( $ch );
अगर($हेडर['HTTP_CODE'] === 200)
{
$ch = curl_init($avatar_from_gravatar);
$fp = fopen($root_path_local . $img_name . '-hidpi.png', 'पश्चिम बंगाल');
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla / 5.0 (Windows NT 6.1; Win64; x 64) AppleWebKit / 537.36 (KHTML, छिपकली की तरह) क्रोम / 39.0.2171.62 सफारी / 537.36 ');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);

fclose($fp);

$small_image = wp_get_image_editor($root_path_local . $img_name . '-hidpi.png');
अगर ( ! is_wp_error( $small_image ) )
{
$small_image->आकार परिवर्तन(40, 40, सच);
$small_image->बचाना($root_path_local . $img_name . '.png');
}
}
}
}
}
ADD_ACTION('Wp_insert_comment', 'Grab_avatar');






/********************************************\
* पृष्ठभूमि में gravatar कैश ताज़ा दैनिक *
\********************************************/
ADD_ACTION( 'WP', 'Bones_setup_schedule' );
समारोह bones_setup_schedule() {
अगर ( ! wp_next_scheduled( 'Bones_daily_event' ) ) {
wp_schedule_event( पहर(), 'रोज', 'Bones_daily_event');
}
}

ADD_ACTION( 'Bones_daily_event', 'Bones_refresh_gravatars' );
समारोह bones_refresh_gravatars()
{
//get list of gravatars somehow
global $wpdb;
$comment_author_emails = $ wpdb->get_results( "DISTINCT का चयन करें(comment_author_email) से " . $wpdb->उपसर्ग . "टिप्पणियाँ" );
प्रत्येक के लिए($$ कुंजी के रूप में comment_author_emails => $वैल)
{
प्रत्येक के लिए($वैल $ एक के रूप में => $बी)
{
grab_avatar('','',सच,$बी);
}
}
}

उत्तर छोड़ दें