میں نے لوگوں کے لئے دکھایا اوتار میرے بلاگ پر تبصرہ کرنے والے رکھنا پسند. ورڈپریس gravatar کی سروس natively کی تو یہ بہت آسان ہے کو چالو کرنے کے کی حمایت. تاہم یہ ایک سرمایہ کاری کے ساتھ آتا ہے - ایک اور ڈومین سے بیرونی فائلوں تک رسائی حاصل کرنے کے نئے کی شکل میں اضافی بوجھ وقت کے بہت اضافہ کر دیتی ہے DNS لک اپ, نئی SSL بنانا کنکشنز, وغیرہ. Wouldn’t it be nice to have gravatars stored locally and served from your own server. ٹھیک ہے کہ کیا میں اب کچھ وقت کے لئے کر رہا ہوں ہے, آپ کو کیسے معلوم کرنا چاہتے ہیں تو, پر پڑھیں ...
In case you’re still wondering just why you’d want to do this, let me offer a few more benefits — images served locally can be compressed before serving them, for example ‑all my images are converted into webp versions, and any browser which supports webp gets the webp version. This is in addition to the reduction from not having to connect to an external server. The local resources can also have a caching header set on them so that browsers will cache them. Gravatar doesn’t provide for a very long cache time.
I have created 3 custom functions, جس میں صرف اپنے تھیم کی functions.php میں جگہ. The first is a custom filter for the native wordpress get_avatar(). جب زور دیا کہ gravatar اور گوگل سے دوسرے گرپس اوتار, and the third creates a daily cronjob which refreshes the gravatars — in case they’ve been changed, or a previously unavailable one is now available.
You will need to do a little bit of tinkering to make it compatible with your theme — I use the “bones” framework as you’ll notice in the 3rd function I’ve reused some code that it provided. You will also need to create, or customise the path to store the gravatars, which in my case are stored in the theme folder in the subpath “/library/images/gravatars/”
/*********************************************\ * صرف مقامی اوتار استعمال get_avatar فلٹر * \*********************************************/ تقریب bones_gravatar($اوتار, $id_or_email, $سائز, $پہلے سے طے شدہ, $ALT) { $root_path = get_template_directory_uri() . '/ لائبریری / تصاویر / Gravatars کے /'; $root_path_local = get_template_directory() . '/ لائبریری / تصاویر / 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 = (INT) $id_or_email; $صارف = get_userdata($ID); اگر ( $صارف ) $ای میل = $ صارف>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 = (INT) $id_or_email->صارف کی شناخت; $صارف = get_userdata($ID); اگر ( $صارف) $ای میل = $ صارف>USER_EMAIL; } elseif ( !خالی($id_or_email->comment_author_email) ) { $ای میل = $ id_or_email->comment_author_email; } } اور { $ای میل = $ id_or_email; } اگر ( !خالی($ای میل) ) { $email_hash = MD5( strtolower( ٹرم( $ای میل ) ) ); اگر(file_exists($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 کے اوتار اوتار - '. $ سائز.' تصویر" چوڑائی ="'$ سائز.'" اونچائی ="'$ سائز.'" ایسآرسی ="' . $gravatar_path . '-hidpi.png" ALT ="Gravatar کے" />'; ورنہ $ اوتار = '<IMG کلاس ="لوڈ Gravatar کے اوتار اوتار - '. $ سائز.' تصویر" چوڑائی ="'$ سائز.'" اونچائی ="'$ سائز.'" ایسآرسی ="' . $gravatar_path . '. PNG" ALT ="Gravatar کے" ' . $gravatar_path_hidpi . '/>'; واپسی $ اوتار; } add_filter('get_avatar', 'bones_gravatar', 10, 5); /***********************\ * Gravatar کے کیشے بنائیں * \***********************/ تقریب grab_avatar($comment_id,$تبصرہ,$جھوٹے = ریفریش,$ای میل = '') { usleep(20); $root_path = get_template_directory_uri() . '/ لائبریری / تصاویر / Gravatars کے /'; $root_path_local = get_template_directory() . '/ لائبریری / تصاویر / Gravatars کے /'; اگر($== جھوٹے ریفریش) $img_name = MD5( get_comment_author_email($comment_id) ); ورنہ $ img_name MD5 =( $ای میل ); اگر(!file_exists($root_path_local . $img_name . 'PNG کی') || $== سچ ریفریش) { اگر($== جھوٹے ریفریش) $bgauthemail = get_comment_author_email(); ورنہ $ bgauthemail = $ ای میل; //try google first $domain= explode("@",$bgauthemail); اگر($ڈومین[1]=="gmail.com") { $چوہدری = curl_init(); curl_setopt($چودھری, CURLOPT_SSL_VERIFYPEER, جھوٹے); curl_setopt($چودھری, CURLOPT_RETURNTRANSFER, سچ ہے); curl_setopt($چودھری, CURLOPT_URL, "HTTPS://picasaweb.google.com/data/entry/api/user/" . $bgauthemail . "?ALT = JSON"); $نتیجہ = curl_exec($چودھری); curl_close($چودھری); $پر obj = json_decode($نتیجہ,سچ ہے); $avatar_from_gmail = $ پر obj['انٹری']["GPhoto $ تھمب نیل"]['$ T']; $توسیع = strrchr($avatar_from_gmail, '.'); $چوہدری = curl_init($avatar_from_gmail); curl_setopt( $چودھری, CURLOPT_NOBODY, سچ ہے ); curl_setopt( $چودھری, CURLOPT_RETURNTRANSFER, جھوٹے ); curl_setopt( $چودھری, CURLOPT_HEADER, جھوٹے ); curl_setopt( $چودھری, CURLOPT_FOLLOWLOCATION, سچ ہے ); curl_setopt( $چودھری, CURLOPT_MAXREDIRS, 3 ); curl_exec( $چودھری ); $ہیڈرز = curl_getinfo( $چودھری ); curl_close( $چودھری ); اگر($سرنامے['http_code'] === 200) { $چوہدری = curl_init($avatar_from_gmail); $FP = fopen کی($root_path_local . $img_name . '-hidpi' . $توسیع, 'ڈبلیو بی'); curl_setopt($چودھری,CURLOPT_USERAGENT,'موزیلا / 5.0 (ونڈوز NT 6.1; Win64; x64 کے) AppleWebKit / 537،36 (KHTML, چھپکلی کی طرح) کروم / 39.0.2171.62 سفاری / 537،36 '); curl_setopt($چودھری, CURLOPT_FILE, $FP); curl_setopt($چودھری, CURLOPT_HEADER, 0); curl_exec($چودھری); curl_close($چودھری); fclose کے($FP); $usegravatar = جھوٹے; $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'); اگر($توسیع ==".JPG") لنک ختم($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"; $چوہدری = curl_init($avatar_from_gravatar); curl_setopt( $چودھری, CURLOPT_NOBODY, سچ ہے ); curl_setopt( $چودھری, CURLOPT_RETURNTRANSFER, جھوٹے ); curl_setopt( $چودھری, CURLOPT_HEADER, جھوٹے ); curl_setopt( $چودھری, CURLOPT_FOLLOWLOCATION, سچ ہے ); curl_setopt( $چودھری, CURLOPT_MAXREDIRS, 3 ); curl_exec( $چودھری ); $ہیڈرز = curl_getinfo( $چودھری ); curl_close( $چودھری ); اگر($سرنامے['http_code'] === 200) { $چوہدری = curl_init($avatar_from_gravatar); $FP = fopen کی($root_path_local . $img_name . '-hidpi.png', 'ڈبلیو بی'); curl_setopt($چودھری,CURLOPT_USERAGENT,'موزیلا / 5.0 (ونڈوز NT 6.1; Win64; x64 کے) AppleWebKit / 537،36 (KHTML, چھپکلی کی طرح) کروم / 39.0.2171.62 سفاری / 537،36 '); curl_setopt($چودھری, CURLOPT_FILE, $FP); curl_setopt($چودھری, CURLOPT_HEADER, 0); curl_exec($چودھری); curl_close($چودھری); 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( "واضح منتخب(comment_author_email) FROM " . $wpdb->سابقہ . "تبصروں" ); ہر ایک کے لئے($$ کلید کے طور پر comment_author_emails => $ویل) { ہر ایک کے لئے($ویل $ ایک کے طور => $B) { grab_avatar('','',سچ ہے,$B); } } }
“Hi James I realise it has been a long while, but I just checked this on windows 11 (build 23H2)…”