WordPress başlık butonları eklentisi WP Heading Buttons

WordPress başlık butonları eklentisi WP Heading Buttons

WordPress altyapılı sitelerinde yayınladığı yazılarda sıklıkla başlık biçimlendirmelerini (H1, H2, H3 vs.) kullananlar, bu işlemin zorluğundan dolayı eminim metin editöründen de, WordPress’ten de şikayetçidir. Uzun zamandır başlık biçimlendirme butonlarını da diğer varsayılan butonlar gibi birer buton haline getirecek bir eklenti fikri vardı aklımda. Veritabanında tamamlanıp yayınlanacağı günü bekleyen onca yazı taslağına görünmeden biraz boş vakit buldum ve eklentiyi bugün yayınlanacak hale getirebildim.

WP Heading Buttons eklentisi, yazı eklemek için kullanılan TinyMCE metin editörünün ilk satırına başlık biçimlendirmelerinde kullanılan H1, H2, H3, H4, H5 ve H6 butonlarını ekliyor. Her bir butonun görünürlüğünü eklentinin ayarlar sayfasından, diğerlerinden bağımsız olarak açıp kapatabiliyorsunuz. Eklentiyi etkinleştirdiğinizde sıklıkla kullanıldığını düşündüğüm H3, H4 ve H5 butonları varsayılan olarak aktif oluyor. İstediğiniz taktirde ayarlar sayfasından diğer butonları da aktif edebilir veya aktif olanlardan kullanmadıklarınızı pasif edebilirsiniz.

Birkaç yerde başka bazı eklentilerin de editöre kendi butonlarını (Video ekleme, kod kısayolu ekleme, indirme yöneticisi vs. butonları) eklemelerinden dolayı editör biçimlendirme panelinin kalabalık hale geldiğine şahit olduğumdan dolayı ayarlara buton aralarındaki boşlukları azaltan bir seçenek daha ekledim. Diğer buton seçenekleri gibi bu da opsiyonel.

Kurulum ve Ayarlar

Eklentiyi, WordPress’in standart eklenti kurma prosedürü ile kurabilirsiniz:

  1. İndireceğiniz ZIP dosyasından çıkan wp-heading-buttons klasörünü herhangi bir FTP programı ile sitenizin /wp-content/plugins/ klasörüne yükleyin.
  2. Eklentiler menüsünün altından eklentiyi etkinleştirin.
  3. Ayarlar -> WP Heading Ayarları adımlarını takip ederek istediğiniz şekilde ayarlamaları yapın.

İndirme Bağlantısı

  WP Heading Buttons v0.3 (5,8 KiB)

WordPress Eklenti Dizini Adresi

https://wordpress.org/plugins/wp-heading-buttons/

Değişiklik Geçmişi

Versiyon 0.3 (2015-12-24)
* editor_plugin.js ve dil dosyaları TinyMCE4 ile uyumlu hale getirildi.
* Arapça, Almanca, İtalyanca ve Fransızca dilleri eklendi.
* WordPress 4.4 uyumluluğu doğrulandı.

Versiyon 0.2 (2013-04-17)
* Eklenti etkisizleştirememe sorunu giderildi.
* Buton seçme ayarları kaldırıldı. Artık tüm butonlar varsayılan olarak aktif.
* TinyMCE dil ayarları eklendi.

Versiyon 0.1 (2013-04-02)
– İlk sürüm.

Ekran Görüntüleri

WP Heading Buttons eklentisi

TinyMCE editörü

WP Heading Buttons eklentisi

Eklenti ayarlar sayfası

WordPress için güvenlik önerileri

Dünya genelinde milyonlarca sitenin altyapısı için kullanılan WordPress, kullanım ve düzenleme kolaylığı kadar güvenli bir sistem olması nedeniyle de tercih ediliyor. Her sürümü binlerce geliştirici tarafından test edilerek açıkları raporlanan ve sürekli güncellenerek güvenli olmayı başaran WordPress’in daha güçlü ve güvenli olması için dikkate alınması gereken bazı noktalar var. Bu yazıda WordPress için genel kabul görmüş güvenlik önlemlerinin önemli olanlarını bulacaksınız.

.htaccess dosyasını etkili kullanın

Aşağıdaki kodu .htaccess dosyasına ekleyerek sitenizin wp-config.php dosyasına tarayıcı üzerinden erişimi engelleyebilirsiniz.

<files wp-config.php>
order allow,deny
deny from all
</files>

Bazı siteler, başka sitelere ?ref=alanadi şeklinde kendi site adreslerini referans veren bağlantılarla hedef sitenin spamcı site damgası yemesine neden olan saldırılar yaparlar. Bu sitelerden gelen ziyaretleri kontrol etmek için aşağıdaki kodu kullanabilirsiniz.

RewriteCond %{THE_REQUEST} \?(ref=.*)?\ HTTP [NC]
RewriteRule .? https://tercan.net%{REQUEST_URI}? [R=301,L]

Bir sonraki ana maddede ?ref=alanadi saldırılarını robots.txt dosyası ile engellemek için örnek bir kullanım da mevcut.

Script injection yolu ile yapılabilecek saldırılardan korunmak için .htaccess dosyanıza aşağıdaki kodları ekleyebilirsiniz.

RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

Son olarak içinde giriş (index) dosyası bulunmayan dizinlerinizin içeriğinin görüntülenmesini engelleyin. Bunun için .htaccess dosyasına aşağıdaki kodu eklemelisiniz.

Options All -Indexes

robots.txt kullanın

robots.txt ile wp-admin, wp-includes ile wp-content dizininde bulunan bazı klasörlerin içeriklerinin ve ?ref=alanadi şeklindeki bağlantıların indekslenmesini engelleyebilirsiniz.

# robots.txt for https://tercan.net/
User-agent: *
Disallow: /wp-admin
Disallow: /wp-includes
Disallow: /wp-content/plugins
Disallow: /wp-content/cache
Disallow: /wp-content/themes
Disallow: /*ref=*

WordPress versiyon bilgisini kaldırın

Daha önce yazdığım WordPress versiyon bilgisini değiştirmek veya kaldırmak başlıklı yazıyı inceleyebilirsiniz.

Eklentilerin versiyon bilgilerini kaldırın

Genelde WordPress eklentileri, kullandıkları JavaScript ve CSS dosyalarına eklenti sürümlerini parametre olarak eklerler. Tavsiye edilen sistemi güncel tutmak olsa da bazen eklentilerin güncelleme hızına yetişmek mümkün olmuyor. Bu durumda da siteler, eklentilerin eski versiyonlarında olabilecek açıkların tespit edilip saldırı amaçlı kullanılabilmesi riski ile karşı karşıya kalabiliyor. Ben bu tür bir riski göze almaktansa aktif temanın functions.php dosyasına aşağıdaki kodu ekleyerek eklentilerin JavaScript ve stil dosyalarından versiyon bilgilerini kaldırmayı tercih ediyorum.

function _remove_script_version( $src ) { $parts = explode( '?', $src ); return $parts[0]; }
add_filter( 'script_loader_src', '_remove_script_version', 15, 1 );
add_filter( 'style_loader_src', '_remove_script_version', 15, 1 );

Farklı bir veritabanı öneki (prefix) kullanın

Sitenin kurulumu esnasında wp-config.php dosyasındaki standart tablo önekini farklı bir önek ile değiştirmeniz şiddetle tavsiye edilir. Bunun için wp-config.php dosyanızda bulunan

$table_prefix = 'wp_';

yerine aşağıdaki gibi bir önek tanımlayabilirsiniz.

$table_prefix = 'wp_YgnyeSvQ_';

Tablo öneki değiştirme işlemi yayında olan bir site üzerinde de yapılabilir fakat bu biraz uzmanlık bilgisi gerektiren bir işlemdir ve risklidir. Bu nedenle işlem öncesi yedek almanızı tavsiye ederim. Mevcut sitenizin yedeğini aldıktan sonra 6 Simple Steps to Change Your Table Prefix in WordPress adresindeki yönergeleri takip ederek tablo önekinizi değiştirebilirsiniz.

Yazılarda görüntülenecek ismi kullanıcı adından farklı yapın

Tek yazarlı bloglarda buna ihtiyaç olmasa da birden çok yazarı olan sitelerde yazıların altına yazının kimin tarafından yazıldığının belli olması için yazar ismi yazdırılır. Özellikle site üzerinde tam erişimi olan kullanıcıların giriş bilgilerinde kullandıkları kullanıcı adının burada görünmesi deneme – yanılma ile şifre tahmini yapan sistemlerin işini oldukça kolaylaştırır. Bu tür sistemler, hem kullanıcı adı hem de şifre tahmini yapmak yerine sadece şifre tahmininde bulunarak daha hızlı sonuca giderler. Bunu engellemek için aşağıdaki resimde de görebileceğiniz gibi kullanıcı adınız harici bir isim belirleyip bunu kullanabilirsiniz.

WordPress kullanıcı adı ve görülecek ad

Yazar profil sayfaları aktif olan sistemlerde bağlantıdan yola çıkarak kullanıcı adını tespit etmek mümkün olduğundan yazar bağlantısının da değiştirilmesi gerekir. Bunun için de Edit Author Slug isimli eklentisini kullanabilirsiniz. Eklentiyi kurduktan sonra profil sayfanıza girip aşağıdaki ekranda da görüleceği gibi yazar sayfanızın kalıcı bağlantısını değiştirebilirsiniz.

Edit Author Slug

Ve diğerleri

  • Hem WordPress yazılımınızı hem de eklentilerinizi sürekli güncel tutun.
  • Güçlü bir parola seçin. Güçlü ve tahmin edilmesi zor bir parola oluşturmak için TÜBİTAK – BİLGEM tarafından hazırlanan Güçlü Parola Oluşturma başlıklı yazıyı okuyabilirsiniz.
  • Dosya ve klasörlerinizin yazma izinlerini kontrol edin. Standart olarak dosyaların yazma izni 644, klasörlerin yazma izni 755 olmalıdır. Resim vs. gibi dosyalarınızı yükleyeceğiniz klasöre yazma izni olarak 777 vermelisiniz.
  • Benzersiz doğrulama anahtarları tanımlayın. Bu işlemi https://api.wordpress.org/secret-key/1.1/salt/ adresinden alacağınız kodları wp-config.php dosyanızda ilgili kodlarla değiştirerek yapabilirsinz.
  • Hem veritabanınızın hem de tüm sitenizin yedeğini periyodik olarak alın.

SON SÖZ:

Her şeyden önemlisi sitenizi adam gibi bir yerde barındırın. Zira sunucu güvenliği sağlanmadıkça en güvenli sistemlere bile kolayca zarar verilebilir.

Birkaç faydalı CSS kodlama ipucu

Birkaç faydalı CSS kodlama ipucu

İnsan, uzun süre aynı şeyleri yaptığı zaman bir düzen ve standart tutturup hem süreden hem de gereksiz yere fosfor harcamaktan kurtuluyor. Bu durum, zaman ve fosfor tasarrufunun yanında yazılan kodun kullanılabilir, okunabilir, uzun ömürlü ve evrensel standartlarda olması gibi birçok avantajı da beraberinde getiriyor. Aşağıda özellikle CSS ve HTML kodlaması ile uğraşanların işini kolaylaştırmak adına kaale almaya değer birkaç madde bulacaksınız.

reset.css kullanın

Tarayıcıların yerleşik stilleri farklı yorumlamalarından kaynaklanacak sorunları minimize etmek için bir reset.css kullanmak her zaman faydalıdır. Aşağıda kullanabileceğiniz birkaç popüler reset.css örneği mevcut.

https://meyerweb.com/eric/tools/css/reset/
https://clarle.github.io/yui3/yui/docs/cssreset/
http://necolas.github.io/normalize.css/
http://html5doctor.com/html-5-reset-stylesheet/

Ben, Eric Meyer tarafından hazırlanan reset.css v2.0 kullanıyorum.

Kısa CSS tanımlamaları kullanın

Mecbur kalmadıkça uzun tanımlamalar yapmak yerine kodlarınızı mümkün olduğunca kısaltın. Zira kısa tanımlamalar kullanmak, gerek temiz kod yazımı gerekse anlaşılabilirlik açısından hem size, hem de haleflerinize (sizden sonra geleceklere) avantaj sağlayacaktır. Kısa CSS tanımlamalarının avantajını, ileride yazdığınız kodlarda güncelleme ve düzenleme yapmak zorunda kaldığınızda kendinizi kalabalıklaşmış kodlarla boğuşmak yerine bir bakışta şıp diye anlaşılabilen kodların içinde bulduğunuzda anlayacaksınız. Performans için dosya boyutundan edeceğiniz avantajı saymıyorum bile.

.post-title {
    font-family: Arial, Tahoma, Verdana;
    font-size: 15px;
    font-style: italic;
    font-weight: bold;
    line-height: 30px;
}

yerine

.post-title {
    font: italic bold 15px/30px Arial, Tahoma, Verdana;
}

kullanım şeklini tercih edebilirsiniz.

Yine benzer şekilde özellikle margin ve padding gibi birden çok ve farklı değer verilebilen tanımlamaları yaparken tekrar eden değerleri kullanmaktan kaçının.

.container {
    margin: 10px 10px 10px 10px;
}

kullanımı yerine

.container {
    margin: 10px;
}

kullanımı,

.container {
    margin: 20px 10px 20px 10px;
}

kullanımı yerine de

.container {
    margin: 20px 10px;
}

kullanımı aynı sonucu verecektir.

CSS bloklarını birbirlerinden ayırın

Her bir bölge için tanımladığınız CSS kodlarını tek bir blok olarak bir arada tutun ve bu bölümleri anlaşılır yorum başlıkları ile diğer bölgelerin kodlarından ayırın. Böylece bir bölümde yapacağınız bir değişiklik için nerede düzenleme yapmanız gerektiğini rahatlıkla bulabilirsiniz.

/**
 * Header
 */
.header {
    line-height: 24px;
    margin-bottom: 20px;
    padding: 10px;
}

.site-title,
.site-description {
    font-family: Helvetica, Geneva, Arial, sans-serif;
    font-size: 24px;
}

/**
 * Navigation
 */
.navigation {
    margin-bottom: 10px;
}

.navigation ul {
    list-style-type: circle;
}

.navigation li {
    float: left;
    margin-right: 10px;
}

.navigation li a {
    color: #d00;
}

/**
 * Footer
 */
.footer {
    background: #eee;
}

.footer a {
    color: #333;
    font-size: 11px;
    text-decoration: underline;
}

Özellikleri bir arada toplamak için classları dağınık kullanmayın

Ortak özellikler atanması gereken elemanları ve class tanımlamalarını bir arada toplamak ile aynı özelliği birden çok eleman / class için tanımlamak arasında kalabilirsiniz. Bu durumda benim tercihim aynı özelliği birden çok eleman / class için tanımlamak oluyor. Her ne kadar diğer seçeneğin de avantajları olsa da sürdürülebilir bir kodlama yapısı için ikincisi çok daha makul ve mantıklı görünüyor.

Yani bahsettiğim;

.header,
.footer {
    line-height: 24px;
    padding: 10px;
}

.header {
    background: #333;
    color: #fff;
}

.footer {
    background: #eee;
    color: #222;
}

şeklinde bir kullanımdan ziyade

.header {
    background: #333;
    color: #fff;
    line-height: 24px;
    padding: 10px;
}

.footer {
    background: #eee;
    color: #222;
    line-height: 24px;
    padding: 10px;
}

şeklinde kullanmaktır.

Bu kullanım başlangıç için veya birkaç satırlık kod bloğu için yanlış bir kullanım şekli olarak görülse de çok fazla sayıda class ve id ile çalıştıkça hiç de yanlış olmadığı anlaşılacaktır. Aksi durumda, ileride çoklu tanım yaptığınız elemanlardan sadece bir tanesi için tanımladığınız özelliği değiştirmek istediğinizde; bu değişikliğin başka elemanları da etkileyip etkilemediğini sorgulamanız, etkilemişse etkilenenler için de ekstra tanımlamalar yapıp eski haline getirmeniz gerekecektir. Ki bu kadarıyla uğraşmak da pek doğru bir yaklaşım gibi görünmüyor.

Elemanların asli özelliklerini koruyun

Elemanlara standart kullanım özellikleri harici ekstra özellikler tanımlamayın. Örnek: strong için altı çizili bir tanımlama yapmak doğru değildir. İlla bu tür elemanlara özellik atamanız gerekiyorsa o eleman için bir class tanımlayıp o class için özellik belirleyebilirsiniz.

strong {
    text-decoration: underline;
}

yerine

strong.comment-author {
    text-decoration: underline;
}

şeklinde kullanırsanız daha sonra başka bir yerde strong uyguladığınız bir başlığın altının neden çizili olduğunu aramak zorunda kalmazsınız.

Anlaşılır ve mantıklı class – id isimleri kullanın

Her ne kadar her eleman için makul ve mantıklı class ve id ismi bulmak bir süre sonra zorlayıcı bir durum olsa da makul ve mantıklı isimler kullanmak her zaman yararlıdır. Birkaç harften oluşan kısaltmalar dosya boyutundan kazanmak için yararlı gibi görünse de stil dosyanızın içeriği yüzlerce hatta binlerce satırı geçtiğinde ve birbirine benzer bir sürü tanım olduğunda içinden çıkılmaz bir karmaşaya sürüklendiğinizi anlarsınız fakat iş işten geçmiş olur.

Aşağıdaki iki CSS bloğundan hangisinin daha okunabilir olduğunu söyleyip kıyaslama yapmanın gerekli olmadığını düşünüyorum.

.cnt {
    margin: 10px;
    padding: 5px;
}

.pt {
    font-size: 18px;
    font-weight: bold;
}
.content {
    margin: 10px;
    padding: 5px;
}

.post-title {
    font-size: 18px;
    font-weight: bold;
}

Sıfırlara değer vermeyin

Sıfır zaten sıfırdır ve px veya em ile bir değer tanımı yapmanız hiçbir şeyi değiştirmeyecektir. O nedenle 0px veya 0em şeklinde kullanım yapmaktan kaçının.
Yanlış kullanım şekli:

.comment {
    margin: 0px 10px 0px 5px;
}

Doğru kullanım şekli:

.comment {
    margin: 0 10px 0 5px;
}

Zorunlu üst elemanları genel tanımlamalara eklemeyin

Zaten bir üst elemana bağlı olmak zorunda olan elemanlar için CSS tanımlaması yaparken üst elemanını da kullanmayın.

ul li {
    float: left;
}

tanımlamasında ul kullanımının,

table td {
    padding: 5px;
}

tanımlamasında da table kullanımının hiçbir anlamı yoktur.

Çünkü bir listede li kullanabilmek için bir üst elemanı olan ul, bir tabloda td kullanabilmek için de yine bir üst elemanı olan table kullanmak zorundasınız. Ve sizin yapacağınız stil tanımı, siz üst eleman kullansanız da kullanmasanız da geçerli olacaktır.

CSS tanımlamalarında üst eleman ancak bir belirteçle (class veya id) kullanıldığında bir anlam kazanır. Şöyle ki;

ul.cat-list li {
    font-weight: bold;
}

Bu tanımlama ile sadece cat-list classı atanmış liste elemanlarının yazıları kalın olacak, bu tanım diğer liste elemanlarını etkilemeyecektir.

Ve diğerleri

Kendiniz için en kolay ve en kullanışlısının hangisi olacağına inanıyorsanız onu seçip standart bir isimlendirme sistemi kullanın.

– Tümü küçük harfle isimlendirme yapabilirsiniz:

.author-name {
    font-size: 18px;
}

– Sadece kelimelerin ilk harfleri büyük, diğerleri küçük şeklinde isimlendirme yapabilirsiniz:

.Author-Name {
    font-size: 18px;
}

Bir standardınızın olması için sabit bir ayraç belirleyip tüm isimlendirmeleri aynı ayraçla yapın.

– Ayraç olarak tire (-) kullanabilirsiniz:

.author-name {
    font-size: 18px;
}

– Ayraç olarak alt çizgi (_) kullanabilirsiniz:

.author_name {
    font-size: 18px;
}

Ben, class ve id isimlendirmelerini tümü küçük harfle ve kelimeleri tire ile ayırarak yapmayı tercih ediyorum.

Az lafla çok şey anlatmak her babayiğidin harcı değil, hele ki benim hiç değil! O nedenle yazı epey uzun olmasına rağmen hala değinilmesi gerektiği halde değinemediğim birçok madde var. Neyse ki bu maddelerin neredeyse tamamı az buçuk İngilizce bilgisi olanların anlayabileceği halde birileri tarafından yazılmış. Aşağıya gerek bu yazıyı yazarken faydalandığım gerekse yazıda bahsedemediğim ipuçlarını barındıran birkaç makaleye bağlantı ekliyorum.