{"id":41482,"date":"2026-04-29T09:00:43","date_gmt":"2026-04-29T06:00:43","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/"},"modified":"2026-04-29T09:00:43","modified_gmt":"2026-04-29T06:00:43","slug":"wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/","title":{"rendered":"WordPress Medya Dosyalar\u0131n\u0131z\u0131 Kendi Eklentinizle G\u00fcvene Al\u0131n"},"content":{"rendered":"<h2>WordPress Medya Dosyalar\u0131n\u0131z\u0131 Kendi Eklentinizle G\u00fcvene Al\u0131n<\/h2>\n<p>WordPress sitenizin medya k\u00fct\u00fcphanesindeki dosyalar\u0131n g\u00fcvenli\u011fi, \u00e7o\u011fu web sitesi sahibi i\u00e7in \u00f6nemli bir konudur. Peki ya hassas bilgilerin veya telif hakk\u0131yla korunan i\u00e7eriklerin bulundu\u011fu bu dosyalar\u0131, mevcut g\u00fcvenlik \u00f6nlemlerinin \u00f6tesine ta\u015f\u0131yarak, tamamen kontrol\u00fcn\u00fcz alt\u0131na almak isterseniz ne yapmal\u0131s\u0131n\u0131z? Bu makalede, WordPress&#8217;in medya y\u00fckleme mekanizmas\u0131n\u0131 derinlemesine inceleyecek ve kendi \u00f6zel y\u00fckleme k\u0131s\u0131tlama eklentinizi nas\u0131l geli\u015ftirebilece\u011finizi ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Kendi eklentinizi olu\u015fturmak, size sadece ek bir g\u00fcvenlik katman\u0131 sunmakla kalmayacak, ayn\u0131 zamanda sitenizin \u00f6zel ihtiya\u00e7lar\u0131na tam olarak uyum sa\u011flayan esnek bir \u00e7\u00f6z\u00fcm elde etmenizi sa\u011flayacakt\u0131r. Bu yolculukta, WordPress&#8217;in temel \u00e7al\u0131\u015fma prensiplerini anlayacak, PHP ve WordPress API&#8217;leri ile nas\u0131l etkile\u015fim kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011frenecek ve sonu\u00e7 olarak medya dosyalar\u0131n\u0131z\u0131n g\u00fcvenli\u011fini en \u00fcst d\u00fczeye \u00e7\u0131karacaks\u0131n\u0131z.<\/p>\n<h3>Neden Kendi Eklentimizi Olu\u015fturmal\u0131y\u0131z?<\/h3>\n<p>G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, web siteleri sadece bilgi payla\u015f\u0131m platformlar\u0131 olmaktan \u00e7\u0131kt\u0131; ayn\u0131 zamanda i\u015fletmelerin vitrinleri, kullan\u0131c\u0131lar\u0131n etkile\u015fimde bulundu\u011fu alanlar ve hatta hassas verilerin sakland\u0131\u011f\u0131 dijital kasalar haline geldi. Bu ba\u011flamda, WordPress gibi pop\u00fcler i\u00e7erik y\u00f6netim sistemlerinin (CMS) g\u00fcvenli\u011fi, her zamankinden daha kritik bir \u00f6nem ta\u015f\u0131yor. WordPress, sundu\u011fu esneklik ve geni\u015f eklenti ekosistemi sayesinde d\u00fcnya genelinde milyonlarca site taraf\u0131ndan tercih ediliyor. Ancak bu pop\u00fclerlik, ayn\u0131 zamanda k\u00f6t\u00fc niyetli ki\u015filerin de hedefi haline gelmesine neden oluyor. Medya dosyalar\u0131, bir WordPress sitesinin en de\u011ferli varl\u0131klar\u0131ndan baz\u0131lar\u0131n\u0131 bar\u0131nd\u0131r\u0131r; telif hakk\u0131yla korunan g\u00f6rseller, \u00f6nemli belgeler, kullan\u0131c\u0131 taraf\u0131ndan y\u00fcklenen hassas bilgiler veya \u00f6zel projelerin taslaklar\u0131 gibi. Mevcut g\u00fcvenlik eklentileri ve WordPress&#8217;in kendi b\u00fcnyesindeki temel g\u00fcvenlik \u00f6nlemleri genellikle genel tehditlere kar\u015f\u0131 koruma sa\u011flasa da, her sitenin kendine \u00f6zg\u00fc riskleri ve gereksinimleri olabilir.<\/p>\n<p>\u0130\u015fte tam da bu noktada, &#8220;kendi \u00e7\u00f6z\u00fcmlerini \u00fcretme&#8221; ihtiyac\u0131 do\u011fuyor. Mevcut eklentiler, sunduklar\u0131 \u00f6zellik setinde s\u0131n\u0131rl\u0131 kalabilir veya sitenizin \u00f6zel i\u015f ak\u0131\u015flar\u0131na tam olarak entegre olmayabilir. Belki de sadece belirli dosya t\u00fcrlerinin y\u00fcklenmesine izin vermek istiyorsunuzdur, ya da y\u00fcklenen dosyalar\u0131n belirli bir boyuttan b\u00fcy\u00fck olmamas\u0131n\u0131 sa\u011flamak, hatta belki de sadece belirli kullan\u0131c\u0131 rollerinin belirli klas\u00f6rlere dosya y\u00fcklemesine izin vermek gibi \u00e7ok spesifik k\u0131s\u0131tlamalar\u0131n\u0131z vard\u0131r. Bu gibi durumlarda, haz\u0131r \u00e7\u00f6z\u00fcmler yetersiz kalabilir ve en etkili yol, kendi ihtiya\u00e7lar\u0131n\u0131za g\u00f6re \u00f6zel olarak tasarlanm\u0131\u015f bir eklenti geli\u015ftirmektir. Kendi eklentinizi olu\u015fturmak, size \u015funlar\u0131 sa\u011flar:<\/p>\n<p>*   <strong>Tam Kontrol:<\/strong> Dosya y\u00fckleme s\u00fcre\u00e7leriniz \u00fczerinde tam kontrole sahip olursunuz. Hangi dosya t\u00fcrlerine izin verilece\u011fi, boyut s\u0131n\u0131rlar\u0131, dosya adland\u0131rma kurallar\u0131 ve hatta y\u00fcklenen dosyalar\u0131n i\u015flenmesi gibi her detay\u0131 kendiniz belirleyebilirsiniz.<br \/>\n*   <strong>\u00d6zel G\u00fcvenlik:<\/strong> Sitenizin \u00f6zel g\u00fcvenlik gereksinimlerine tam olarak uyan, size \u00f6zg\u00fc bir g\u00fcvenlik katman\u0131 olu\u015fturursunuz. Bu, genel g\u00fcvenlik a\u00e7\u0131klar\u0131na kar\u015f\u0131 daha diren\u00e7li olman\u0131z\u0131 sa\u011flar.<br \/>\n*   <strong>Esneklik ve \u00d6l\u00e7eklenebilirlik:<\/strong> \u0130\u015fletmeniz b\u00fcy\u00fcd\u00fck\u00e7e veya ihtiya\u00e7lar\u0131n\u0131z de\u011fi\u015ftik\u00e7e, eklentinizi kolayca g\u00fcncelleyebilir ve yeni \u00f6zellikler ekleyebilirsiniz.<br \/>\n*   <strong>Performans Optimizasyonu:<\/strong> Sadece ihtiyac\u0131n\u0131z olan \u00f6zellikleri i\u00e7eren bir eklenti, gereksiz kod y\u00fck\u00fcn\u00fc ortadan kald\u0131rarak sitenizin performans\u0131n\u0131 olumlu etkileyebilir.<br \/>\n*   <strong>\u00d6\u011frenme ve Geli\u015fim:<\/strong> Kendi eklentinizi geli\u015ftirmek, WordPress&#8217;in i\u00e7 i\u015fleyi\u015fini, PHP&#8217;yi ve web g\u00fcvenli\u011fi prensiplerini daha derinlemesine anlaman\u0131z\u0131 sa\u011flar. Bu, gelecekteki projeleriniz i\u00e7in paha bi\u00e7ilmez bir deneyimdir.<\/p>\n<p>\u00d6rne\u011fin, bir grafik tasar\u0131m ajans\u0131ysan\u0131z ve m\u00fc\u015fterilerinizle b\u00fcy\u00fck tasar\u0131m dosyalar\u0131 payla\u015f\u0131yorsan\u0131z, bu dosyalar\u0131n sadece yetkili ki\u015filerin indirebilece\u011fi veya belirli bir s\u00fcre sonra otomatik olarak silinece\u011fi bir sistem isteyebilirsiniz. Ya da bir e-ticaret sitesi i\u015fletiyorsan\u0131z ve \u00fcr\u00fcn a\u00e7\u0131klamalar\u0131na y\u00fcklenen g\u00f6rsellerin belirli bir \u00e7\u00f6z\u00fcn\u00fcrl\u00fckte ve boyutta olmas\u0131n\u0131 sa\u011flamak, hem site h\u0131z\u0131n\u0131 art\u0131r\u0131r hem de marka tutarl\u0131l\u0131\u011f\u0131n\u0131 korur. Bu t\u00fcr senaryolar, \u00f6zel bir eklentinin ne kadar de\u011ferli olabilece\u011fini g\u00f6stermektedir. Kendi eklentinizi geli\u015ftirmek, bir &#8220;yap-boz&#8221; par\u00e7as\u0131 eklemekten ziyade, sitenizin temel yap\u0131s\u0131n\u0131 g\u00fc\u00e7lendiren ve ona \u00f6zg\u00fc bir kimlik kazand\u0131ran stratejik bir ad\u0131md\u0131r.<\/p>\n<h3>WordPress Medya Y\u00fckleme S\u00fcrecinin Temelleri<\/h3>\n<p>WordPress&#8217;te bir medya dosyas\u0131 y\u00fcklendi\u011finde, arka planda bir dizi olay zinciri tetiklenir. Bu s\u00fcreci anlamak, kendi eklentimizi geli\u015ftirirken hangi noktalara m\u00fcdahale etmemiz gerekti\u011fini bilmemizi sa\u011flar. Temel olarak, kullan\u0131c\u0131 bir dosya se\u00e7ip y\u00fckleme d\u00fc\u011fmesine bast\u0131\u011f\u0131nda, WordPress bu dosyay\u0131 sunucuya al\u0131r, ge\u00e7ici bir konuma kaydeder ve ard\u0131ndan \u00e7e\u015fitli do\u011frulama ve i\u015fleme ad\u0131mlar\u0131ndan ge\u00e7irir. Bu ad\u0131mlar\u0131n en \u00f6nemlileri \u015funlard\u0131r:<\/p>\n<p>1.  <strong>Dosya Se\u00e7imi ve G\u00f6nderimi:<\/strong> Kullan\u0131c\u0131, taray\u0131c\u0131n\u0131n dosya se\u00e7ici aray\u00fcz\u00fcn\u00fc kullanarak bir veya daha fazla dosya se\u00e7er. Bu dosyalar, HTTP POST iste\u011fi ile sunucuya g\u00f6nderilir.<br \/>\n2.  <strong>Sunucu Taraf\u0131 Kabul\u00fc:<\/strong> WordPress, gelen dosyay\u0131 sunucuda ge\u00e7ici bir konuma al\u0131r. Bu a\u015famada, PHP&#8217;nin <code>$_FILES<\/code> s\u00fcper global de\u011fi\u015fkeni arac\u0131l\u0131\u011f\u0131yla dosya hakk\u0131nda temel bilgilere eri\u015filebilir. Bu bilgiler aras\u0131nda dosya ad\u0131, ge\u00e7ici konumu, hata kodu ve dosya boyutu bulunur.<br \/>\n3.  <strong>Do\u011frulama (Validation):<\/strong> WordPress ve bizim geli\u015ftirece\u011fimiz eklenti, bu noktada \u00e7e\u015fitli do\u011frulama kontrolleri yapar. Bunlar \u015funlar\u0131 i\u00e7erebilir:<br \/>\n    *   <strong>Dosya T\u00fcr\u00fc Kontrol\u00fc:<\/strong> Y\u00fcklenen dosyan\u0131n uzant\u0131s\u0131 (\u00f6rne\u011fin, <code>.jpg<\/code>, <code>.png<\/code>, <code>.pdf<\/code>) ve MIME t\u00fcr\u00fc (\u00f6rne\u011fin, <code>image\/jpeg<\/code>, <code>application\/pdf<\/code>) kontrol edilir. Sadece belirli dosya t\u00fcrlerine izin verilir.<br \/>\n    *   <strong>Dosya Boyutu Kontrol\u00fc:<\/strong> Dosyan\u0131n boyutu, sunucu taraf\u0131ndan belirlenen maksimum y\u00fckleme boyutu ve bizim belirledi\u011fimiz \u00f6zel bir s\u0131n\u0131r dahilinde mi, kontrol edilir.<br \/>\n    *   <strong>G\u00fcvenlik Kontrolleri:<\/strong> Zararl\u0131 olabilecek kodlar\u0131 veya istenmeyen karakterleri i\u00e7eren dosya adlar\u0131 veya i\u00e7erikleri tespit edilmeye \u00e7al\u0131\u015f\u0131l\u0131r.<br \/>\n4.  <strong>Dosyan\u0131n Medya K\u00fct\u00fcphanesine Kaydedilmesi:<\/strong> Do\u011frulamalar ba\u015far\u0131l\u0131 olursa, dosya WordPress&#8217;in <code>wp-content\/uploads<\/code> klas\u00f6r\u00fc alt\u0131ndaki ilgili y\u0131la ve aya ait dizine ta\u015f\u0131n\u0131r. Dosyan\u0131n meta verileri (ba\u015fl\u0131k, a\u00e7\u0131klama, etiketler vb.) veritaban\u0131na kaydedilir ve dosya, WordPress medya k\u00fct\u00fcphanesinde g\u00f6r\u00fcn\u00fcr hale gelir.<br \/>\n5.  <strong>G\u00f6rsel \u0130\u015fleme (Image Manipulation):<\/strong> E\u011fer y\u00fcklenen dosya bir g\u00f6rsel ise, WordPress otomatik olarak farkl\u0131 boyutlarda (thumbnail, medium, large vb.) \u00f6nizleme s\u00fcr\u00fcmleri olu\u015fturur. Bu i\u015flem, <code>wp_generate_attachment_metadata<\/code> fonksiyonu gibi WordPress API&#8217;leri arac\u0131l\u0131\u011f\u0131yla ger\u00e7ekle\u015ftirilir.<\/p>\n<p>Bu s\u00fcrece m\u00fcdahale etmek i\u00e7in WordPress, &#8220;hook&#8221; ad\u0131 verilen bir mekanizma sunar. Hook&#8217;lar, WordPress&#8217;in belirli bir noktada \u00e7al\u0131\u015fmas\u0131n\u0131 durdurup bizim \u00f6zel kodumuzu \u00e7al\u0131\u015ft\u0131rmam\u0131za olanak tan\u0131yan g\u00fc\u00e7l\u00fc ara\u00e7lard\u0131r. Medya y\u00fckleme s\u00fcreciyle ilgili kullanabilece\u011fimiz baz\u0131 \u00f6nemli hook&#8217;lar \u015funlard\u0131r:<\/p>\n<p>*   <code>upload_mimes<\/code>: Bu hook, izin verilen dosya t\u00fcrlerini (MIME t\u00fcrleri) de\u011fi\u015ftirmemizi veya filtrelememizi sa\u011flar.<br \/>\n*   <code>wp_handle_upload_dir<\/code>: Y\u00fcklenen dosyalar\u0131n kaydedilece\u011fi dizini \u00f6zelle\u015ftirmemize olanak tan\u0131r.<br \/>\n*   <code>wp_handle_upload<\/code>: Dosya y\u00fckleme i\u015fleminin kendisini yakalamam\u0131z\u0131 ve \u00fczerinde de\u011fi\u015fiklik yapmam\u0131z\u0131 sa\u011flayan en temel hook&#8217;lardan biridir. Bu hook i\u00e7inde dosya ad\u0131n\u0131 de\u011fi\u015ftirebilir, boyut kontrolleri yapabilir veya y\u00fcklemeyi tamamen engelleyebiliriz.<br \/>\n*   <code>wp_check_filetype_and_ext<\/code>: Dosya t\u00fcr\u00fc ve uzant\u0131s\u0131 kontrol\u00fcn\u00fc \u00f6zelle\u015ftirmek i\u00e7in kullan\u0131labilir.<\/p>\n<p>Bu hook&#8217;lar\u0131 kullanarak, WordPress&#8217;in varsay\u0131lan medya y\u00fckleme davran\u0131\u015f\u0131n\u0131 istedi\u011fimiz gibi \u015fekillendirebiliriz. \u00d6rne\u011fin, sadece belirli bir kullan\u0131c\u0131n\u0131n belirli bir dosya t\u00fcr\u00fcn\u00fc y\u00fcklemesine izin vermek istiyorsak, <code>wp_handle_upload<\/code> hook&#8217;unu kullanarak kullan\u0131c\u0131n\u0131n kimli\u011fini kontrol edebilir ve dosya t\u00fcr\u00fcn\u00fc do\u011frulayabiliriz. E\u011fer bu ko\u015fullar sa\u011flanmazsa, kullan\u0131c\u0131ya bir hata mesaj\u0131 g\u00f6stererek y\u00fcklemeyi durdurabiliriz. Bu temel bilgileri edinmek, kendi eklentimizi in\u015fa etmenin ilk ve en \u00f6nemli ad\u0131m\u0131d\u0131r. Bu, bize neyi nerede de\u011fi\u015ftirece\u011fimizi ve hangi WordPress fonksiyonlar\u0131n\u0131 kullanaca\u011f\u0131m\u0131z\u0131 g\u00f6sterir.<\/p>\n<h3>Kendi Eklentimizi Olu\u015fturma: Ad\u0131m Ad\u0131m Rehber<\/h3>\n<p>Kendi \u00f6zel WordPress eklentimizi olu\u015fturmak, web sitemizin medya dosyalar\u0131n\u0131n g\u00fcvenli\u011fini ve y\u00f6netimini ki\u015fiselle\u015ftirmek i\u00e7in harika bir yoldur. Bu s\u00fcre\u00e7, temel PHP bilgisi ve WordPress&#8217;in eklenti yap\u0131s\u0131n\u0131 anlama becerisi gerektirir. Gelin, bu s\u00fcreci ad\u0131m ad\u0131m inceleyelim ve medya y\u00fckleme k\u0131s\u0131tlamalar\u0131 i\u00e7in basit ama etkili bir eklenti olu\u015ftural\u0131m.<\/p>\n<h4>Ad\u0131m 1: Eklenti Dosya Yap\u0131s\u0131n\u0131 Olu\u015fturma<\/h4>\n<p>Her WordPress eklentisi, genellikle ana bir PHP dosyas\u0131ndan ve iste\u011fe ba\u011fl\u0131 olarak di\u011fer klas\u00f6rlerden olu\u015fur. \u00d6ncelikle, WordPress eklentileri dizininde yeni bir klas\u00f6r olu\u015ftural\u0131m. \u00d6rne\u011fin, <code>wp-content\/plugins\/ozel-medya-guvenlik<\/code> gibi. Bu klas\u00f6r\u00fcn i\u00e7ine, eklentimizin ana dosyas\u0131 olacak <code>ozel-medya-guvenlik.php<\/code> ad\u0131nda bir dosya olu\u015ftural\u0131m.<\/p>\n<p>Bu ana PHP dosyas\u0131n\u0131n en ba\u015f\u0131nda, WordPress&#8217;in eklentiyi tan\u0131mas\u0131 i\u00e7in \u00f6zel bir ba\u015fl\u0131k blo\u011fu eklememiz gerekir. Bu blok, eklentinin ad\u0131n\u0131, a\u00e7\u0131klamas\u0131n\u0131, s\u00fcr\u00fcm\u00fcn\u00fc ve yazar\u0131n\u0131 belirtir.<\/p>\n<pre><code class=\"language-php\"><?php\n\/**\n * Plugin Name: \u00d6zel Medya G\u00fcvenlik\n * Plugin URI: https:\/\/ornek-site.com\/ozel-medya-guvenlik\n * Description: WordPress medya y\u00fcklemeleri i\u00e7in \u00f6zel k\u0131s\u0131tlamalar uygular.\n * Version: 1.0\n * Author: Ad\u0131n\u0131z Soyad\u0131n\u0131z\n * Author URI: https:\/\/ornek-site.com\n * License: GPL2\n *\/\n\n\/\/ Eklenti kodlar\u0131 buraya gelecek\n?><\/pre>\n<p><\/code><\/p>\n<p>Bu ba\u015fl\u0131k blo\u011fu, WordPress y\u00f6netici panelindeki \"Eklentiler\" sayfas\u0131nda eklentimizin g\u00f6r\u00fcnmesini sa\u011flar.<\/p>\n<h4>Ad\u0131m 2: \u0130zin Verilen Dosya T\u00fcrlerini K\u0131s\u0131tlama<\/h4>\n<p>\u015eimdi, sadece belirli dosya t\u00fcrlerinin y\u00fcklenmesine izin veren bir fonksiyon yazal\u0131m. Bunu yapmak i\u00e7in <code>upload_mimes<\/code> hook'unu kullanaca\u011f\u0131z. Bu hook, WordPress'in varsay\u0131lan olarak izin verdi\u011fi dosya t\u00fcrlerinin bir listesini al\u0131r ve biz de bu listeyi filtreleyerek istedi\u011fimiz t\u00fcrleri ekleyebilir veya \u00e7\u0131karabiliriz.<\/p>\n<p>\u00d6rne\u011fin, sadece resim dosyalar\u0131 (<code>.jpg<\/code>, <code>.jpeg<\/code>, <code>.png<\/code>, <code>.gif<\/code>) ve PDF dosyalar\u0131 (<code>.pdf<\/code>) y\u00fcklenmesine izin vermek istedi\u011fimizi varsayal\u0131m.<\/p>\n<pre><code class=\"language-php\"><?php\n\/**\n * Plugin Name: \u00d6zel Medya G\u00fcvenlik\n * Plugin URI: https:\/\/ornek-site.com\/ozel-medya-guvenlik\n * Description: WordPress medya y\u00fcklemeleri i\u00e7in \u00f6zel k\u0131s\u0131tlamalar uygular.\n * Version: 1.0\n * Author: Ad\u0131n\u0131z Soyad\u0131n\u0131z\n * Author URI: https:\/\/ornek-site.com\n * License: GPL2\n *\/\n\nfunction ozel_izin_verilen_dosya_tipleri( $mimes ) {\n    \/\/ Varsay\u0131lan izin verilen t\u00fcrleri al\n    $mimes = array(\n        'jpg|jpeg|jpe' => 'image\/jpeg',\n        'gif'          => 'image\/gif',\n        'png'          => 'image\/png',\n        'pdf'          => 'application\/pdf',\n    );\n    return $mimes;\n}\nadd_filter( 'upload_mimes', 'ozel_izin_verilen_dosya_tipleri' );\n\n?><\/pre>\n<p><\/code><\/p>\n<p>Bu kodu eklenti dosyam\u0131za ekledikten sonra, WordPress y\u00f6netici panelinden eklentiyi etkinle\u015ftirebilirsiniz. Art\u0131k, sadece yukar\u0131da belirtilen dosya t\u00fcrlerini y\u00fckleyebileceksiniz. Ba\u015fka bir dosya t\u00fcr\u00fcn\u00fc y\u00fcklemeye \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131zda, WordPress size uygun bir hata mesaj\u0131 g\u00f6sterecektir. Bu, sitenizin g\u00fcvenli\u011fini art\u0131rmak i\u00e7in basit ama etkili bir ilk ad\u0131md\u0131r. \u00d6rne\u011fin, bir blog sitesi i\u00e7in sadece resim ve PDF dosyalar\u0131na izin vermek, gereksiz ve potansiyel olarak zararl\u0131 dosya t\u00fcrlerinin y\u00fcklenmesini engelleyerek g\u00fcvenlik duvar\u0131n\u0131 g\u00fc\u00e7lendirir.<\/p>\n<h4>Ad\u0131m 3: Dosya Boyutu K\u0131s\u0131tlamas\u0131 Ekleme<\/h4>\n<p>\u0130kinci \u00f6nemli k\u0131s\u0131tlama, dosya boyutu s\u0131n\u0131r\u0131d\u0131r. \u00c7ok b\u00fcy\u00fck dosyalar\u0131n y\u00fcklenmesi, sunucu kaynaklar\u0131n\u0131 t\u00fcketebilir ve site performans\u0131n\u0131 olumsuz etkileyebilir. Bunu <code>wp_handle_upload<\/code> hook'unu kullanarak yapabiliriz. Bu hook, dosya y\u00fckleme i\u015flemini tamamlamadan \u00f6nce \u00e7al\u0131\u015f\u0131r ve bize dosya hakk\u0131nda bilgi verir.<\/p>\n<pre><code class=\"language-php\"><?php\n\/**\n * Plugin Name: \u00d6zel Medya G\u00fcvenlik\n * Plugin URI: https:\/\/ornek-site.com\/ozel-medya-guvenlik\n * Description: WordPress medya y\u00fcklemeleri i\u00e7in \u00f6zel k\u0131s\u0131tlamalar uygular.\n * Version: 1.0\n * Author: Ad\u0131n\u0131z Soyad\u0131n\u0131z\n * Author URI: https:\/\/ornek-site.com\n * License: GPL2\n *\/\n\nfunction ozel_izin_verilen_dosya_tipleri( $mimes ) {\n    $mimes = array(\n        'jpg|jpeg|jpe' => 'image\/jpeg',\n        'gif'          => 'image\/gif',\n        'png'          => 'image\/png',\n        'pdf'          => 'application\/pdf',\n    );\n    return $mimes;\n}\nadd_filter( 'upload_mimes', 'ozel_izin_verilen_dosya_tipleri' );\n\nfunction ozel_dosya_boyutu_kistlamasi( $file ) {\n    $max_boyut_mb = 5; \/\/ Maksimum 5 MB\n    $max_boyut_byte = $max_boyut_mb * 1024 * 1024; \/\/ Byte'a \u00e7evir\n\n    if ( $file['size'] > $max_boyut_byte ) {\n        return array(\n            'error' => __( \"Dosya boyutu en fazla \" . $max_boyut_mb . \" MB olabilir.\", 'ozel-medya-guvenlik' ),\n            'uploaded' => false\n        );\n    }\n    return $file;\n}\nadd_filter( 'wp_handle_upload', 'ozel_dosya_boyutu_kistlamasi' );\n\n?><\/pre>\n<p><\/code><\/p>\n<p>Bu kodda, <code>$max_boyut_mb<\/code> de\u011fi\u015fkeni ile istedi\u011fimiz maksimum dosya boyutunu megabayt cinsinden belirleyebiliriz. Ard\u0131ndan, bu de\u011feri byte'a \u00e7evirip y\u00fcklenen dosyan\u0131n boyutu ile kar\u015f\u0131la\u015ft\u0131r\u0131yoruz. E\u011fer dosya boyutu belirlenen s\u0131n\u0131r\u0131 a\u015farsa, bir hata mesaj\u0131 d\u00f6nd\u00fcrerek y\u00fcklemeyi engelliyoruz. <code>__( \"...\", 'ozel-medya-guvenlik' )<\/code> yap\u0131s\u0131, metinlerin dil dosyalar\u0131 arac\u0131l\u0131\u011f\u0131yla \u00e7evrilebilir olmas\u0131n\u0131 sa\u011flar (uluslararas\u0131la\u015ft\u0131rma - i18n).<\/p>\n<h4>Ad\u0131m 4: Kullan\u0131c\u0131 Rol\u00fcne G\u00f6re K\u0131s\u0131tlama (\u0130leri D\u00fczey)<\/h4>\n<p>Daha geli\u015fmi\u015f bir senaryoda, sadece belirli kullan\u0131c\u0131 rollerinin (\u00f6rne\u011fin, y\u00f6netici veya edit\u00f6r) belirli dosya t\u00fcrlerini y\u00fcklemesine izin vermek isteyebiliriz. Bunu yapmak i\u00e7in <code>wp_handle_upload<\/code> hook'unu tekrar kullanabiliriz, ancak bu sefer kullan\u0131c\u0131n\u0131n rol\u00fcn\u00fc de kontrol etmemiz gerekecektir.<\/p>\n<pre><code class=\"language-php\"><?php\n\/**\n * Plugin Name: \u00d6zel Medya G\u00fcvenlik\n * Plugin URI: https:\/\/ornek-site.com\/ozel-medya-guvenlik\n * Description: WordPress medya y\u00fcklemeleri i\u00e7in \u00f6zel k\u0131s\u0131tlamalar uygular.\n * Version: 1.0\n * Author: Ad\u0131n\u0131z Soyad\u0131n\u0131z\n * Author URI: https:\/\/ornek-site.com\n * License: GPL2\n *\/\n\nfunction ozel_izin_verilen_dosya_tipleri( $mimes ) {\n    $mimes = array(\n        'jpg|jpeg|jpe' => 'image\/jpeg',\n        'gif'          => 'image\/gif',\n        'png'          => 'image\/png',\n        'pdf'          => 'application\/pdf',\n    );\n    return $mimes;\n}\nadd_filter( 'upload_mimes', 'ozel_izin_verilen_dosya_tipleri' );\n\nfunction ozel_dosya_boyutu_kistlamasi( $file ) {\n    $max_boyut_mb = 5; \/\/ Maksimum 5 MB\n    $max_boyut_byte = $max_boyut_mb * 1024 * 1024; \/\/ Byte'a \u00e7evir\n\n    if ( $file['size'] > $max_boyut_byte ) {\n        return array(\n            'error' => __( \"Dosya boyutu en fazla \" . $max_boyut_mb . \" MB olabilir.\", 'ozel-medya-guvenlik' ),\n            'uploaded' => false\n        );\n    }\n    return $file;\n}\nadd_filter( 'wp_handle_upload', 'ozel_dosya_boyutu_kistlamasi' );\n\n\nfunction ozel_kullanici_rolu_kistlamasi( $file ) {\n    \/\/ Sadece y\u00f6netici ve edit\u00f6r rollerine izin ver\n    $izinli_roller = array( 'administrator', 'editor' );\n\n    if ( ! current_user_can( 'upload_files' ) ) { \/\/ Genel dosya y\u00fckleme izni var m\u0131?\n        return array(\n            'error' => __( \"Dosya y\u00fckleme izniniz yok.\", 'ozel-medya-guvenlik' ),\n            'uploaded' => false\n        );\n    }\n\n    $kullanici = wp_get_current_user();\n\n    \/\/ E\u011fer kullan\u0131c\u0131n\u0131n rol\u00fc izin verilen roller aras\u0131nda de\u011filse\n    if ( ! array_intersect( $izinli_roller, $kullanici->roles ) ) {\n        return array(\n            'error' => __( \"Bu dosya t\u00fcr\u00fcn\u00fc y\u00fcklemek i\u00e7in yetkiniz yok.\", 'ozel-medya-guvenlik' ),\n            'uploaded' => false\n        );\n    }\n\n    return $file;\n}\nadd_filter( 'wp_handle_upload', 'ozel_kullanici_rolu_kistlamasi' );\n\n?><\/pre>\n<p><\/code><\/p>\n<p>Bu kodda, <code>current_user_can( 'upload_files' )<\/code> fonksiyonu ile kullan\u0131c\u0131n\u0131n genel olarak dosya y\u00fckleme izni olup olmad\u0131\u011f\u0131n\u0131 kontrol ediyoruz. Ard\u0131ndan <code>wp_get_current_user()<\/code> ile mevcut kullan\u0131c\u0131n\u0131n bilgilerini al\u0131p, <code>roles<\/code> \u00f6zelli\u011fini kullanarak rollerini kontrol ediyoruz. <code>array_intersect<\/code> fonksiyonu ile izinli rollerimizle kullan\u0131c\u0131n\u0131n rollerini kar\u015f\u0131la\u015ft\u0131r\u0131yoruz. E\u011fer kullan\u0131c\u0131n\u0131n rol\u00fc izin verilen roller aras\u0131nda yoksa, y\u00fcklemeyi engelliyoruz. Bu t\u00fcr bir k\u0131s\u0131tlama, \u00f6rne\u011fin sadece edit\u00f6rlerin ve y\u00f6neticilerin y\u00f6netici paneli \u00fczerinden hassas belgeler y\u00fcklemesine izin vermek istedi\u011finizde \u00e7ok faydal\u0131 olacakt\u0131r.<\/p>\n<p>Kendi eklentimizi olu\u015fturmak, bize bu t\u00fcr \u00f6zel gereksinimleri kar\u015f\u0131lamak i\u00e7in s\u0131n\u0131rs\u0131z olanaklar sunar. Yukar\u0131daki \u00f6rnekler, sadece ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Dosya adlar\u0131n\u0131 de\u011fi\u015ftirmek, y\u00fcklenen dosyalar\u0131 i\u015flemek, farkl\u0131 klas\u00f6rlere kaydetmek gibi daha pek \u00e7ok \u015feyi bu yap\u0131y\u0131 kullanarak yapabilirsiniz.<\/p>\n<h3>Ger\u00e7ek D\u00fcnya Senaryolar\u0131 ve Vaka Analizleri<\/h3>\n<p>Kendi \u00f6zel medya y\u00fckleme eklentinizi olu\u015fturman\u0131n pratik faydalar\u0131n\u0131 daha iyi anlamak i\u00e7in baz\u0131 ger\u00e7ek d\u00fcnya senaryolar\u0131na ve vaka analizlerine g\u00f6z atal\u0131m. Bu \u00f6rnekler, farkl\u0131 sekt\u00f6rlerdeki i\u015fletmelerin veya web sitesi sahiplerinin kar\u015f\u0131la\u015ft\u0131\u011f\u0131 spesifik sorunlar\u0131 ve bu sorunlara \u00f6zel eklentilerle nas\u0131l \u00e7\u00f6z\u00fcm bulduklar\u0131n\u0131 g\u00f6sterecektir.<\/p>\n<h4>Vaka Analizi 1: Bir E-ticaret Sitesinde \u00dcr\u00fcn G\u00f6rseli Y\u00f6netimi<\/h4>\n<p><strong>Senaryo:<\/strong> Bir e-ticaret sitesi sahibi, \u00fcr\u00fcnlerinin g\u00f6rsellerinin tutarl\u0131 bir kalitede ve boyutta olmas\u0131n\u0131 istiyor. Farkl\u0131 boyutlardaki veya kalitesiz g\u00f6rseller, marka imaj\u0131n\u0131 zedeleyebilir ve kullan\u0131c\u0131 deneyimini olumsuz etkileyebilir. Ayr\u0131ca, \u00e7ok b\u00fcy\u00fck boyutlu g\u00f6rseller site h\u0131z\u0131n\u0131 d\u00fc\u015f\u00fcrerek d\u00f6n\u00fc\u015f\u00fcm oranlar\u0131n\u0131 olumsuz etkiler.<\/p>\n<p><strong>Sorun:<\/strong> Mevcut WordPress medya y\u00fckleme ayarlar\u0131 bu konuda yeterli de\u011fil. Kullan\u0131c\u0131lar (site y\u00f6neticileri veya \u00fcr\u00fcn y\u00f6neticileri) farkl\u0131 boyutlarda ve kalitelerde g\u00f6rseller y\u00fckleyebiliyor.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong> \u00d6zel bir eklenti geli\u015ftirildi. Bu eklenti, a\u015fa\u011f\u0131daki k\u0131s\u0131tlamalar\u0131 uyguluyor:<\/p>\n<p>*   <strong>Dosya T\u00fcr\u00fc K\u0131s\u0131tlamas\u0131:<\/strong> Sadece <code>jpg<\/code>, <code>jpeg<\/code>, <code>png<\/code> uzant\u0131l\u0131 g\u00f6rsellere izin veriliyor.<br \/>\n*   <strong>Boyut K\u0131s\u0131tlamas\u0131:<\/strong> Maksimum dosya boyutu 2 MB olarak ayarlan\u0131yor.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcn\u00fcrl\u00fck Kontrol\u00fc:<\/strong> Y\u00fcklenen g\u00f6rsellerin minimum 800x600 piksel \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011fe sahip olmas\u0131 gerekiyor. E\u011fer daha d\u00fc\u015f\u00fck \u00e7\u00f6z\u00fcn\u00fcrl\u00fckte bir g\u00f6rsel y\u00fcklenmeye \u00e7al\u0131\u015f\u0131l\u0131rsa, kullan\u0131c\u0131ya bilgilendirme yap\u0131l\u0131yor ve y\u00fckleme engelleniyor.<br \/>\n*   <strong>Otomatik Yeniden Boyutland\u0131rma ve Optimizasyon:<\/strong> Belirlenen maksimum boyutun \u00fczerindeki g\u00f6rseller, otomatik olarak s\u0131k\u0131\u015ft\u0131r\u0131l\u0131yor ve belirlenen \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011fe yak\u0131n bir boyuta getiriliyor. Bu, hem dosya boyutunu d\u00fc\u015f\u00fcr\u00fcyor hem de g\u00f6rsel kalitesini koruyor.<\/p>\n<p><strong>Sonu\u00e7:<\/strong> Bu \u00f6zel eklenti sayesinde, e-ticaret sitesi sahibi, \u00fcr\u00fcn g\u00f6rsellerinin kalitesini ve boyutunu standartla\u015ft\u0131rd\u0131. Site h\u0131z\u0131 artt\u0131, marka imaj\u0131 g\u00fc\u00e7lendi ve kullan\u0131c\u0131 deneyimi iyile\u015fti. Manuel g\u00f6rsel d\u00fczenleme s\u00fcresi azald\u0131.<\/p>\n<h4>Vaka Analizi 2: Bir Hukuk B\u00fcrosunun Gizli Belgeleri<\/h4>\n<p><strong>Senaryo:<\/strong> Bir hukuk b\u00fcrosu, m\u00fcvekkillerine ait hassas belgeleri ve dosyalar\u0131 WordPress sitesi \u00fczerinden payla\u015fmak veya ar\u015fivlemek istiyor. Bu belgelerin yetkisiz ki\u015filer taraf\u0131ndan eri\u015filmemesi hayati \u00f6nem ta\u015f\u0131yor.<\/p>\n<p><strong>Sorun:<\/strong> Standart medya k\u00fct\u00fcphanesi, dosyalar\u0131n herkese a\u00e7\u0131k olarak eri\u015filebilir olmas\u0131na neden olabilir. Dosya t\u00fcr\u00fc k\u0131s\u0131tlamalar\u0131 yeterli de\u011fil, \u00e7\u00fcnk\u00fc <code>.docx<\/code>, <code>.pdf<\/code>, <code>.xlsx<\/code> gibi bir\u00e7ok dosya t\u00fcr\u00fc hassas bilgi i\u00e7erebilir.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong> Geli\u015ftirilen \u00f6zel eklenti, a\u015fa\u011f\u0131daki \u00f6zellikleri i\u00e7eriyor:<\/p>\n<p>*   <strong>Dosya T\u00fcr\u00fc K\u0131s\u0131tlamas\u0131:<\/strong> Sadece <code>.pdf<\/code> ve <code>.docx<\/code> gibi belirli ofis ve belge formatlar\u0131na izin veriliyor.<br \/>\n*   <strong>Kullan\u0131c\u0131 Rol\u00fc K\u0131s\u0131tlamas\u0131:<\/strong> Sadece \"Avukat\" ve \"Y\u00f6netici\" rollerine sahip kullan\u0131c\u0131lar\u0131n bu t\u00fcr dosyalar\u0131 y\u00fcklemesine izin veriliyor.<br \/>\n*   <strong>Gizli Klas\u00f6r Yap\u0131s\u0131:<\/strong> Y\u00fcklenen t\u00fcm dosyalar, standart <code>wp-content\/uploads<\/code> klas\u00f6r\u00fcnden ayr\u0131, daha g\u00fcvenli ve gizli bir klas\u00f6re kaydediliyor. Bu klas\u00f6re do\u011frudan URL ile eri\u015fim engelleniyor.<br \/>\n*   <strong>Eri\u015fim Kontrol\u00fc:<\/strong> Dosyalar, WordPress'in kendi izin sistemine entegre edilerek, sadece ilgili m\u00fcvekkil veya avukat\u0131n oturum a\u00e7t\u0131\u011f\u0131nda eri\u015febilece\u011fi \u015fekilde yap\u0131land\u0131r\u0131l\u0131yor. Dosyalar\u0131n indirilmesi i\u00e7in \u00f6zel bir indirme ba\u011flant\u0131s\u0131 olu\u015fturuluyor ve bu ba\u011flant\u0131lar belirli bir s\u00fcre sonra ge\u00e7ersiz k\u0131l\u0131n\u0131yor.<\/p>\n<p><strong>Sonu\u00e7:<\/strong> Bu eklenti, hukuk b\u00fcrosunun hassas verilerini g\u00fcvenli bir \u015fekilde y\u00f6netmesini sa\u011flad\u0131. M\u00fcvekkil gizlili\u011fi korundu ve yasal uyumluluk sa\u011fland\u0131. Yetkisiz eri\u015fim riskleri minimuma indirildi.<\/p>\n<h4>Vaka Analizi 3: Bir E\u011fitim Platformunda Ders Materyalleri<\/h4>\n<p><strong>Senaryo:<\/strong> Bir online e\u011fitim platformu, \u00f6\u011frencilere ders materyalleri (sunumlar, video dosyalar\u0131, \u00e7al\u0131\u015fma ka\u011f\u0131tlar\u0131) sunuyor. Belirli derslere ait materyallerin sadece o dersin \u00f6\u011frencileri taraf\u0131ndan indirilmesi gerekiyor.<\/p>\n<p><strong>Sorun:<\/strong> Standart WordPress medya k\u00fct\u00fcphanesi, bu t\u00fcr eri\u015fim kontrol\u00fcn\u00fc sa\u011flamak i\u00e7in yeterli de\u011fil. T\u00fcm y\u00fcklenen dosyalar varsay\u0131lan olarak herkese a\u00e7\u0131k.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong> Geli\u015ftirilen \u00f6zel eklenti, a\u015fa\u011f\u0131daki i\u015flevleri yerine getiriyor:<\/p>\n<p>*   <strong>Dosya T\u00fcr\u00fc K\u0131s\u0131tlamas\u0131:<\/strong> <code>.pdf<\/code>, <code>.pptx<\/code>, <code>.mp4<\/code> gibi e\u011fitim materyallerine uygun dosya t\u00fcrlerine izin veriliyor.<br \/>\n*   <strong>Kategori Bazl\u0131 Y\u00fckleme:<\/strong> Y\u00fcklenen her dosyan\u0131n hangi derse ait oldu\u011fu belirtiliyor. Eklenti, bu bilgiyi kullanarak dosyay\u0131 ilgili dersin \"gizli\" klas\u00f6r\u00fcne kaydediyor.<br \/>\n*   <strong>\u00d6\u011frenci Yetkilendirmesi:<\/strong> Sadece ilgili derse kay\u0131tl\u0131 olan \u00f6\u011frencilerin, kendi \u00f6\u011frenci panelleri \u00fczerinden bu materyallere eri\u015febilmesi ve indirebilmesi sa\u011flan\u0131yor.<br \/>\n*   <strong>Dosya Adland\u0131rma Kurallar\u0131:<\/strong> Y\u00fcklenen dosyalar\u0131n belirli bir adland\u0131rma standard\u0131na uymas\u0131 zorunlu tutuluyor (\u00f6rne\u011fin, <code>DersAdi_Konu_Tarih.pdf<\/code>).<\/p>\n<p><strong>Sonu\u00e7:<\/strong> E\u011fitim platformu, ders materyallerinin g\u00fcvenli\u011fini sa\u011flad\u0131 ve telif haklar\u0131n\u0131 korudu. \u00d6\u011frenciler, sadece kendi derslerine ait materyallere kolayca eri\u015febildi. Bu, platformun profesyonel ve g\u00fcvenilir imaj\u0131n\u0131 peki\u015ftirdi.<\/p>\n<p>Bu vaka analizleri, kendi \u00f6zel eklentinizi geli\u015ftirmenin ne kadar esnek ve g\u00fc\u00e7l\u00fc bir \u00e7\u00f6z\u00fcm olabilece\u011fini g\u00f6stermektedir. \u0130htiya\u00e7lar\u0131n\u0131za g\u00f6re \u015fekillendirebilece\u011finiz bir eklenti, web sitenizin g\u00fcvenli\u011fini ve i\u015flevselli\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir.<\/p>\n<h3>\u0130leri D\u00fczey Teknikler ve Optimizasyonlar<\/h3>\n<p>Kendi \u00f6zel medya y\u00fckleme eklentimizi olu\u015ftururken, temel k\u0131s\u0131tlamalar\u0131n \u00f6tesine ge\u00e7erek daha geli\u015fmi\u015f teknikler ve optimizasyonlar uygulayabiliriz. Bu, eklentimizin daha g\u00fc\u00e7l\u00fc, g\u00fcvenli ve kullan\u0131c\u0131 dostu olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h4>Dosya Adland\u0131rma Kurallar\u0131 ve Otomatik Yeniden Adland\u0131rma<\/h4>\n<p>Kullan\u0131c\u0131lar taraf\u0131ndan y\u00fcklenen dosya adlar\u0131 bazen karma\u015f\u0131k, anlams\u0131z veya g\u00fcvenlik riski ta\u015f\u0131yan karakterler i\u00e7erebilir. \u00d6rne\u011fin, <code>image_12345.jpg<\/code> veya <code>dosya-final-v2-son.pdf<\/code> gibi isimler hem y\u00f6netimi zorla\u015ft\u0131r\u0131r hem de SEO a\u00e7\u0131s\u0131ndan ideal de\u011fildir. \u00d6zel bir eklenti ile bu s\u00fcreci otomatikle\u015ftirebiliriz:<\/p>\n<p>*   <strong>Temizleme ve Normalle\u015ftirme:<\/strong> Dosya adlar\u0131ndaki bo\u015fluklar\u0131 alt \u00e7izgiye (<code>_<\/code>) \u00e7evirme, \u00f6zel karakterleri kald\u0131rma ve t\u00fcm harfleri k\u00fc\u00e7\u00fck harfe d\u00f6n\u00fc\u015ft\u00fcrme gibi i\u015flemler yap\u0131labilir.<br \/>\n*   <strong>Benzersizlik Sa\u011flama:<\/strong> E\u011fer ayn\u0131 isimde birden fazla dosya y\u00fcklenirse, \u00e7ak\u0131\u015fmalar\u0131 \u00f6nlemek i\u00e7in dosya ad\u0131na rastgele bir say\u0131 veya tarih ekleyerek benzersiz hale getirebiliriz.<br \/>\n*   <strong>SEO Dostu Adland\u0131rma:<\/strong> Dosya adlar\u0131na, y\u00fcklendi\u011fi i\u00e7eri\u011fin ba\u015fl\u0131\u011f\u0131 veya anahtar kelimeleri gibi bilgileri ekleyerek arama motorlar\u0131 i\u00e7in daha optimize hale getirebiliriz.<\/p>\n<p>Bu i\u015flevselli\u011fi <code>wp_handle_upload<\/code> hook'u i\u00e7inde veya <code>wp_unique_post_slug_filter<\/code> gibi filtreler arac\u0131l\u0131\u011f\u0131yla uygulayabiliriz.<\/p>\n<p>\u00d6rnek bir kod par\u00e7ac\u0131\u011f\u0131 (basitle\u015ftirilmi\u015f):<\/p>\n<pre><code class=\"language-php\">function ozel_dosya_adi_temizle( $file ) {\n    $filename = basename( $file['name'] );\n    $sanitized_filename = sanitize_file_name( $filename ); \/\/ WordPress'in kendi temizleme fonksiyonu\n    $sanitized_filename = str_replace( ' ', '_', $sanitized_filename ); \/\/ Bo\u015fluklar\u0131 alt \u00e7izgi yap\n    $sanitized_filename = strtolower( $sanitized_filename ); \/\/ K\u00fc\u00e7\u00fck harfe \u00e7evir\n\n    \/\/ Benzersizlik kontrol\u00fc ve ekleme (daha karma\u015f\u0131k mant\u0131k gerektirebilir)\n    $file_info = pathinfo( $sanitized_filename );\n    $extension = ! empty( $file_info['extension'] ) ? '.' . $file_info['extension'] : '';\n    $name_without_ext = ! empty( $file_info['filename'] ) ? $file_info['filename'] : '';\n\n    $counter = 1;\n    $new_filename = $sanitized_filename;\n    while ( file_exists( $file['file'] . '\/' . $new_filename ) ) { \/\/ Ger\u00e7ek dosya yolu kontrol\u00fc daha do\u011fru olur\n        $new_filename = $name_without_ext . '_' . $counter . $extension;\n        $counter++;\n    }\n\n    $file['name'] = $new_filename;\n    return $file;\n}\nadd_filter( 'wp_handle_upload_prefilter', 'ozel_dosya_adi_temizle' ); \/\/ Y\u00fcklemeden hemen \u00f6nce \u00e7al\u0131\u015f\u0131r<\/pre>\n<p><\/code><\/p>\n<p>#### G\u00fcvenli Klas\u00f6r Yap\u0131s\u0131 ve Eri\u015fim Kontrol\u00fc<\/p>\n<p>Standart <code>wp-content\/uploads<\/code> klas\u00f6r\u00fc, genellikle web sunucusunun k\u00f6k dizininde yer al\u0131r ve do\u011fru yap\u0131land\u0131r\u0131lmad\u0131\u011f\u0131nda g\u00fcvenlik a\u00e7\u0131klar\u0131 olu\u015fturabilir. Daha hassas dosyalar i\u00e7in \u00f6zel bir klas\u00f6r yap\u0131s\u0131 olu\u015fturmak \u00f6nemlidir:<\/p>\n<p>*   <strong>Gizli Klas\u00f6rler:<\/strong> <code>wp-config.php<\/code> dosyas\u0131nda tan\u0131mlanan sabitler arac\u0131l\u0131\u011f\u0131yla veya \u00f6zel bir eklenti ile <code>wp-content<\/code> d\u0131\u015f\u0131na veya daha derin bir dizine dosya y\u00fckleme alan\u0131 olu\u015fturulabilir.<br \/>\n*   <strong><code>.htaccess<\/code> ile Koruma:<\/strong> \u00d6zel klas\u00f6rlere do\u011frudan eri\u015fimi engellemek i\u00e7in <code>.htaccess<\/code> dosyas\u0131 kullan\u0131labilir. Bu, sadece belirli scriptler veya yetkili kullan\u0131c\u0131lar\u0131n dosyalara eri\u015febilmesini sa\u011flar.<br \/>\n*   <strong>WordPress API'leri ile Eri\u015fim Kontrol\u00fc:<\/strong> Y\u00fcklenen dosyalar\u0131n indirilmesi veya g\u00f6r\u00fcnt\u00fclenmesi i\u00e7in WordPress'in <code>get_attached_file<\/code> gibi fonksiyonlar\u0131n\u0131 kullanarak dosya yolunu al\u0131p, kullan\u0131c\u0131 rollerini kontrol eden \u00f6zel bir fonksiyon yaz\u0131labilir.<\/p>\n<p>#### Geli\u015fmi\u015f Dosya Do\u011frulama (\u0130\u00e7erik Tabanl\u0131)<\/p>\n<p>Sadece dosya uzant\u0131s\u0131n\u0131 kontrol etmek yeterli de\u011fildir. K\u00f6t\u00fc niyetli ki\u015filer, dosya uzant\u0131s\u0131n\u0131 de\u011fi\u015ftirerek zararl\u0131 kod i\u00e7eren bir dosyay\u0131 y\u00fcklemeye \u00e7al\u0131\u015fabilirler (\u00f6rne\u011fin, bir <code>.exe<\/code> dosyas\u0131n\u0131 <code>.jpg<\/code> olarak yeniden adland\u0131rmak). Daha g\u00fcvenli bir yakla\u015f\u0131m, dosya i\u00e7eri\u011fini de do\u011frulamakt\u0131r:<\/p>\n<p>*   <strong>MIME T\u00fcr\u00fc Do\u011frulamas\u0131:<\/strong> <code>finfo_file<\/code> veya <code>mime_content_type<\/code> gibi PHP fonksiyonlar\u0131 ile dosyan\u0131n ger\u00e7ek MIME t\u00fcr\u00fc belirlenerek uzant\u0131 ile kar\u015f\u0131la\u015ft\u0131r\u0131labilir.<br \/>\n*   <strong>Zararl\u0131 Kod Taramas\u0131:<\/strong> ClamAV gibi harici antivir\u00fcs yaz\u0131l\u0131mlar\u0131yla entegrasyon veya PHP tabanl\u0131 zararl\u0131 kod tespit k\u00fct\u00fcphaneleri kullan\u0131larak dosya i\u00e7eri\u011fi taranabilir.<br \/>\n*   <strong>G\u00f6r\u00fcnt\u00fc Dosyalar\u0131 \u0130\u00e7in Metadatalar\u0131n Temizlenmesi:<\/strong> \u00d6zellikle g\u00f6rsellerde, EXIF verileri gibi ki\u015fisel veya hassas bilgiler i\u00e7erebilen metadatalar temizlenebilir. WordPress'in <code>wp_get_attachment_metadata<\/code> ve <code>wp_update_attachment_metadata<\/code> fonksiyonlar\u0131 bu konuda yard\u0131mc\u0131 olabilir.<\/p>\n<p>#### Kullan\u0131c\u0131 Deneyimini \u0130yile\u015ftirme<\/p>\n<p>Eklentimizin sadece g\u00fcvenli olmas\u0131 de\u011fil, ayn\u0131 zamanda kullan\u0131c\u0131lar i\u00e7in de pratik olmas\u0131 \u00f6nemlidir.<\/p>\n<p>*   <strong>Geli\u015fmi\u015f Hata Mesajlar\u0131:<\/strong> Kullan\u0131c\u0131lara neden y\u00fcklemenin ba\u015far\u0131s\u0131z oldu\u011funu a\u00e7\u0131k\u00e7a belirten bilgilendirici hata mesajlar\u0131 sunulmal\u0131d\u0131r.<br \/>\n*   <strong>G\u00f6rsel Geri Bildirim:<\/strong> Y\u00fckleme s\u00fcreci s\u0131ras\u0131nda ilerleme \u00e7ubu\u011fu veya ba\u015far\u0131\/hata ikonlar\u0131 gibi g\u00f6rsel geri bildirimler sa\u011flanabilir.<br \/>\n*   <strong>Toplu Y\u00fckleme (Batch Upload):<\/strong> Birden fazla dosyan\u0131n ayn\u0131 anda y\u00fcklenmesine olanak tan\u0131mak, kullan\u0131c\u0131lar\u0131n i\u015f ak\u0131\u015f\u0131n\u0131 h\u0131zland\u0131r\u0131r.<\/p>\n<p>Bu ileri d\u00fczey teknikler, \u00f6zel eklentinizin sadece bir g\u00fcvenlik arac\u0131 olmaktan \u00e7\u0131k\u0131p, sitenizin genel verimlili\u011fini ve kullan\u0131c\u0131 deneyimini art\u0131ran kapsaml\u0131 bir \u00e7\u00f6z\u00fcm haline gelmesini sa\u011flar.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p>Kendi \u00f6zel medya y\u00fckleme eklentinizi geli\u015ftirirken veya kullan\u0131rken kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorular ve cevaplar\u0131 a\u015fa\u011f\u0131da bulunmaktad\u0131r.<\/p>\n<h4>1. Kendi eklentimi olu\u015fturmak yerine haz\u0131r bir eklenti kullansam olmaz m\u0131?<\/h4>\n<p>Haz\u0131r eklentiler \u00e7o\u011fu genel ihtiya\u00e7 i\u00e7in yeterli olabilir. Ancak, \u00f6zel gereksinimleriniz varsa (\u00f6rne\u011fin, \u00e7ok spesifik dosya t\u00fcr\u00fc k\u0131s\u0131tlamalar\u0131, belirli kullan\u0131c\u0131 rollerine \u00f6zel izinler, dosya adland\u0131rma kurallar\u0131, \u00f6zel klas\u00f6r yap\u0131s\u0131 vb.), haz\u0131r eklentiler bu esnekli\u011fi sunamayabilir. Kendi eklentinizi olu\u015fturmak, size tam kontrol ve sitenizin \u00f6zel ihtiya\u00e7lar\u0131na %100 uyum sa\u011flama imkan\u0131 verir. Ayr\u0131ca, gereksiz \u00f6zellikler i\u00e7ermeyen \u00f6zel bir eklenti, sitenizin performans\u0131n\u0131 daha iyi optimize edebilir.<\/p>\n<h4>2. \u00d6zel eklentim WordPress g\u00fcncellemelerinden etkilenir mi?<\/h4>\n<p>WordPress g\u00fcncellemeleri genellikle \u00e7ekirdek fonksiyonlarda de\u011fi\u015fiklikler yapar. E\u011fer eklentiniz, WordPress'in temel medya y\u00fckleme fonksiyonlar\u0131na (hook'lar arac\u0131l\u0131\u011f\u0131yla) entegre oluyorsa ve bu fonksiyonlar g\u00fcncellemelerde b\u00fcy\u00fck \u00f6l\u00e7\u00fcde de\u011fi\u015fmediyse, eklentiniz genellikle sorunsuz \u00e7al\u0131\u015fmaya devam eder. Ancak, her b\u00fcy\u00fck WordPress g\u00fcncellemesinden sonra eklentinizin uyumlulu\u011funu test etmeniz \u00f6nerilir. Eklentinizi iyi bir \u015fekilde kodlarsan\u0131z ve WordPress'in API'lerini do\u011fru kullan\u0131rsan\u0131z, g\u00fcncelleme sorunlar\u0131 en aza iner.<\/p>\n<h4>3. Kendi eklentimi olu\u015ftururken hangi programlama dilini kullanmal\u0131y\u0131m?<\/h4>\n<p>WordPress eklentileri PHP programlama dili ile geli\u015ftirilir. PHP, sunucu tarafl\u0131 bir dildir ve WordPress'in temelini olu\u015fturur. Eklentilerinizde ayr\u0131ca JavaScript (\u00f6zellikle \u00f6n y\u00fcz etkile\u015fimleri i\u00e7in) ve CSS (g\u00f6rsel d\u00fczenlemeler i\u00e7in) kullanabilirsiniz, ancak \u00e7ekirdek i\u015flevsellik PHP ile sa\u011flan\u0131r. Temel PHP bilgisi ve WordPress'in API'leri hakk\u0131nda bilgi sahibi olmak, kendi eklentinizi olu\u015fturmak i\u00e7in yeterlidir.<\/p>\n<h4>4. Eklentimdeki hata mesajlar\u0131n\u0131 nas\u0131l daha anla\u015f\u0131l\u0131r hale getirebilirim?<\/h4>\n<p>Hata mesajlar\u0131n\u0131n anla\u015f\u0131l\u0131r olmas\u0131, kullan\u0131c\u0131 deneyimi i\u00e7in kritik \u00f6neme sahiptir. <code>__( \"Mesaj\u0131n\u0131z\", 'eklenti-text-domain' )<\/code> yap\u0131s\u0131n\u0131 kullanarak metinlerinizi \u00e7evrilebilir hale getirebilirsiniz. Hata mesajlar\u0131n\u0131zda<\/p>\n","protected":false},"excerpt":{"rendered":"WordPress Medya Dosyalar\u0131n\u0131z\u0131 Kendi Eklentinizle G\u00fcvene Al\u0131n WordPress sitenizin medya k\u00fct\u00fcphanesindeki dosyalar\u0131n g\u00fcvenli\u011fi, \u00e7o\u011fu web sitesi sahibi i\u00e7in \u00f6nemli bir konudur.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[694],"tags":[],"class_list":{"0":"post-41482","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-wordpress","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>WordPress Medya Dosyalar\u0131n\u0131z\u0131 Kendi Eklentinizle G\u00fcvene Al\u0131n - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WordPress Medya Dosyalar\u0131n\u0131z\u0131 Kendi Eklentinizle G\u00fcvene Al\u0131n\" \/>\n<meta property=\"og:description\" content=\"WordPress Medya Dosyalar\u0131n\u0131z\u0131 Kendi Eklentinizle G\u00fcvene Al\u0131n WordPress sitenizin medya k\u00fct\u00fcphanesindeki dosyalar\u0131n g\u00fcvenli\u011fi, \u00e7o\u011fu web sitesi sahibi i\u00e7in \u00f6nemli bir konudur.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-29T06:00:43+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"WordPress Medya Dosyalar\u0131n\u0131z\u0131 Kendi Eklentinizle G\u00fcvene Al\u0131n\",\"datePublished\":\"2026-04-29T06:00:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/\"},\"wordCount\":3901,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"WordPress\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/\",\"name\":\"WordPress Medya Dosyalar\u0131n\u0131z\u0131 Kendi Eklentinizle G\u00fcvene Al\u0131n - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-04-29T06:00:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WordPress Medya Dosyalar\u0131n\u0131z\u0131 Kendi Eklentinizle G\u00fcvene Al\u0131n\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"WordPress Medya Dosyalar\u0131n\u0131z\u0131 Kendi Eklentinizle G\u00fcvene Al\u0131n - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/","og_locale":"tr_TR","og_type":"article","og_title":"WordPress Medya Dosyalar\u0131n\u0131z\u0131 Kendi Eklentinizle G\u00fcvene Al\u0131n","og_description":"WordPress Medya Dosyalar\u0131n\u0131z\u0131 Kendi Eklentinizle G\u00fcvene Al\u0131n WordPress sitenizin medya k\u00fct\u00fcphanesindeki dosyalar\u0131n g\u00fcvenli\u011fi, \u00e7o\u011fu web sitesi sahibi i\u00e7in \u00f6nemli bir konudur.","og_url":"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-04-29T06:00:43+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"9 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"WordPress Medya Dosyalar\u0131n\u0131z\u0131 Kendi Eklentinizle G\u00fcvene Al\u0131n","datePublished":"2026-04-29T06:00:43+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/"},"wordCount":3901,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["WordPress"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/","url":"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/","name":"WordPress Medya Dosyalar\u0131n\u0131z\u0131 Kendi Eklentinizle G\u00fcvene Al\u0131n - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-04-29T06:00:43+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/wordpress-medya-dosyalarinizi-kendi-eklentinizle-guvene-alin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"WordPress Medya Dosyalar\u0131n\u0131z\u0131 Kendi Eklentinizle G\u00fcvene Al\u0131n"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41482","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=41482"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41482\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=41482"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=41482"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=41482"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}