BU DERSİN BAŞLIKLARI
- 1 Tema Değerlendirme Süreci
- 2 Tema Gönderme Limiti
- 3 Beklenecek Süre
- 4 Birden Çok Yazar Hesabına Sahip Olabilirsiniz
- 5 WordPress Temasının Zorunlu Özellikleri
- 5.1 1- Temanın Erişilebilirliği – Accessibility
- 5.2 2- Temanın Kod Yapısı
- 5.3 3- Çekirdek İşlevler ve Özellikler
- 5.4 4- Yavru Tema (Child Theme)
- 5.5 5- Readme.txt Dosyası Formatı
- 5.6 6- Sunum mu? İşlevsellik mi?
- 5.7 7- İçe Aktarma ve İndirme
- 5.8 8- Dökümantasyon
- 5.9 9- Dil
- 5.10 10- Tema Lisansı
- 5.11 11- Adlandırma
- 5.12 12- Seçenekler ve Ayarlar
- 5.13 13- Eklentiler
- 5.14 14- Temanın Ekran Görüntüsü (screenshot.png)
- 5.15 15- Gizlilik
- 5.16 16- Görsel Kuralları
- 5.17 17- Satış, Krediler ve Linkler
- 5.18 18- Stil ve Scriptler
- 5.19 Şablonlar
- 6 Sonuç
Tema değerlendirme kuralları (Theme Review Guidelines), WordPress tema inceleme ekibi tarafından, bir temayı değerlendirirken dikkat edilen özelliklerin belirtildiği bir rehberdir. Bu rehber sayesinde, temamızın hangi durumlarda incelemeden geçeceğini veya kalacağını görmüş oluyoruz. Bu sayede temamızı göndermeden önce, onaylanmasını engelleyecek her türlü hatadan arındırma imkanımız oluyor.
Tema Değerlendirme Süreci
Bir WordPress teması, incelenmek üzere gönderildiğinde, başına gelecek olaylar sırasıyla şunlardır:
- Tema incelenmek üzere, tema yükleme sayfasından gönderilir.
- Temanız incelenecek temalar sırasına alınır.
- İnceleme ekibinden bir kişi, temayı incelemek üzere görevlendirilir.
- Temayı inceleyecek olan kişi temayı, taşıması zorunlu özelliklere göre değerlendirir, tavsiye edilen özellikler dikkate alınmaz. (Sözü geçen zorunlu ve tavsiye edilen özellikler yazımızın devamında verilecektir.)
- İnceleme yapıldıktan sonra, yapılan inceleme bilgileri temanın ehliyetine (ticket) eklenir.
- Eğer temanın ehliyetinde belirtilen bilgiler, temanın taşıması gereken zorunlu özellikleri karşılamıyorsa, tema onay almaz ve güncelleme gelmesi için “İnceleniyor” (Reviewing) durumunda bekletilir.
- Eğer tema ehliyeti, temanın yazarı tarafından 7 gün içinde güncellenmezse, hareketsizlik yüzünden temanız incelemeye kapatılır.
Tema, incelenmek üzere WordPress ekibinden bir kişiye aktarıldıktan sonraki ilk 48 saat içinde, temanın ehliyetinde bir güncelleme olmazsa, temanın yazarı, temasının tekrar inceleme kuyruğuna alınmasını isteyebilir. - Tema, gerekli özellikleri taşıyorsa, inceleyen kişi tarafından Onaylandı olarak işaretlenir.
- Tema Onaylandı olarak işaretlendiğinde, temanın ehliyeti, tema incelemek ile görevli çekirdek takımdan bir kişinin incelemesi için yeni bir kuyruğa alınır. Bu inceleme, final incelemesidir.
- Final incelemesinden geçemezse, tema yazarından ve incelemeyi yapan kişiden, temanın tekrar gözden geçirilmesi istenir.
- Final incelemesinden geçerse, temanın ehliyeti, yayında olarak işaretlenir ve tema, WordPress.org arşivinde yayınlanır. Yayındaki bir temaya bir güncelleme gönderdiğinizde, tema güncelleme listesine alınır.
Tema Gönderme Limiti
- WordPress tema inceleme takımına, bir defada bir tane tema göndermenize izin verilir. Gönderdiğiniz temanın ehliyeti, yayında ve kapalı olarak işaretlenmeden, ikinci bir tema göndermenize izin verilmez.
- Bir yazar, bir ayda en fazla bir tema gönderebilir. Yani, gönderdiğiniz ilk tema, bir aylık süre dolmadan yayına alınmışsa, ikinci temayı göndermek için bu sürenin dolmasını beklemek zorundasınız.
- Yukarıdaki iki kural, yayındaki temaların güncelleme yüklemeleri için geçerli değildir.
Beklenecek Süre
Temanızın girdiği kuyruklar için belirlenmiş bir bekleme süresi yoktur. Temanın kuyrukta bekleyeceği süre, WordPress tema inceleme ekibinin sahip olduğu kişi sayısına bağlıdır.
İnceleyen kişiyi beklerken veya istenen bir değişikliği yapması gereken yazarı beklerken, temanın ehliyetinde, 7 gün süreyle hiç bir değişiklik olmazsa, tema, incelemesi için bir başka kişiye aktarılır veya yazarının sessiz kalması durumunda kapatılır. Bu yüzden, temanızın değerlendirme sürecinde, sizden bir düzeltme bekleniyorsa ve sizin de vaktiniz yoksa, en azından müsait olmadığınızı belirtmek için, tema ehliyetinde bir güncelleme yapmanız önemlidir.
Birden Çok Yazar Hesabına Sahip Olabilirsiniz
Eğer, birden çok WordPress.org hesabınız var ise, şu hususlara dikkat etmelisiniz:
- Aynı anda birden çok tema ehliyetiniz olamaz. Yani aynı anda sadece bir hesabınızdan ve bir tane tema incelenebilir.
- Yukarıdaki kurala uymamak, bütün ehliyetlerinizin kapanmasına ve bir daha bu temalarınızın alsa yüklenememesine sebep olur. Yaptığınız ihlalin içeriğine göre bütün hesaplarınızın ban yeme olasılığı da vardır.
- Bu tür sıkıntılar ile karşılaşmamak için, diğer hesaplarınızı WordPress ekibine,
themes@wordpress.org
adresine mail göndererek bildirmelisiniz.
WordPress Temasının Zorunlu Özellikleri
Bir WordPress temasının, WordPress.org arşivinde yayınlanabilmesi için, bu başlık altında belirtilen özellikleri taşıması gerekir.
Bir tema, 3 veya daha fazla hata içeriyorsa onay alamaz. Tabi, temanın yazarı, belirlenen hataları düzeltip temayı tekrar gönderebilir.
1- Temanın Erişilebilirliği – Accessibility
Atla ve Git Linkleri (Skip Links): Temanın erişilebilirlik açısından, bütün sayfalarında, sayfa içeriğine veya menüye götüren bir linke sahip olması gerekmektedir. Bu linkler, normal kullanıcıların göremeyeceği şekilde sayfa sınırlarının dışına yerleştirilebilir, fakat ekran okuyucuların ya da klavye yönlendiricilerinin fark edebileceği şekilde yerleştirilmelidir.
Aşağıda, standartlara uygun bir skip link örneği verilmiştir:
<body>
<header>
<!-- Skip linki -->
<a class="screen-reader-text skip-link" href="#content">İçeriğe git</a>
<h1>Site Başlığı</h1>
</header>
<nav>
<ul>
<li><a href="...">Ana sayfa</a></li>
<li><a href="...">Accessibility</a></li>
<li><a href="...">Blog</a></li>
</ul>
</nav>
<main id="content">
<!-- Sayfanın içeriği -->
</main>
</body>
Yukarıdaki kodda gördüğünüz İçeriğe git linki şu özellikleri taşır:
- Sayfadaki ilk fokuslanabilir elementtir.
- Bu link, normal kullanıcıların da görebileceği şekilde kalabilir ya da ekran dışına itilebilir (CSS ile).
- Link, CSS yardımı ile sayfa dışına itildi ise bile, ekran okuyucular sayfada önce bu linke fokuslanacaktır.
- Tıklandığında, bu link, bizi doğrudan içeriğe götürmelidir.
Oluşturulan İçeriğe git linkini saklamak için tavsiye edilen CSS kodları şöyledir:
sytle.css
/* Sadece ekran okuyucular için oluşturulmuş text. */
.screen-reader-text {
border: 0;
clip: rect(1px, 1px, 1px, 1px);
clip-path: inset(50%);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
word-wrap: normal !important;
}
.screen-reader-text:focus {
background-color: #eee;
clip: auto !important;
clip-path: none;
color: #444;
display: block;
font-size: 1em;
height: auto;
left: 5px;
line-height: normal;
padding: 15px 23px 14px;
text-decoration: none;
top: 5px;
width: auto;
z-index: 100000; /* WP toolbarın üzerine. */
}
Ekran okuyucular için oluşturulmuş içerikleri (screen-reader-text) saklamak için display:none
özelliği kullanılmaz.
İçeriğe git linkleri, sayfanın asıl içeriğinden önce, menü alanı, site başlığı kısmı (header alanı) gibi geçilmesi gereken bölümler varsa kullanılır.
Eğer temanızı, ‘accessibility-ready’ etiketi ile yayınlamayı düşünüyorsunuz yukarıda bahsettiğimizden daha fazla erişilebilir kod kullanmanız gerekecektir.
2- Temanın Kod Yapısı
Temanızın kod yapısında şu özellikler zorunludur:
- PHP ya da JavaScript hatası veya uyarısı veya bildirisi olmamalıdır.
- Veri tabanına kaydedilecek bütün dataların, ilgili fonksiyonlar ile önce bir güvenlik kontrolünden geçirilmesi gerekir.
- Herhangi bir datayı sunmak için kullanılmıyorsa, kancaların (hook) yapısının değiştirilmesine ya da kaldırılmasına izin yoktur.
- Theme Check eklentisinin bütün gerekliliklerini taşımalıdır.
- Temanızda public olarak tanımladığınız bütün fonksiyonların, sabitlerin, global değişkenlerin, post metaların isimleri gibi isimlerde bir önek kullanmalısınız. Menü lokasyon isimleri ve sidebar ID leri bu kuralın dışındadır.
Kod Yapısı ile İlgili Doğru Örnekler
- Geçerli bir döküman tipi (doctype) ve temanın dili belirtilmelidir:
<!doctype html>
<html <?php language_attributes(); ?>>
- Tema içinde
add_shortcode()
fonkisyonun kullanımına izin yoktur:
add_shortcode( 'shortcode_adi', 'shortcode_callback_func' );
- Sunum ile ilgili olmayan kancaların (hooks) yapısı değiştirilemez ya da silinemez:
remove_action( 'wp_head', 'wp_generator' );
remove_action( 'wp_head', 'feed_links_extra', 3);
remove_action( 'wp_head', 'feed_links', 2);
remove_action( 'admin_notices', 'update_nag', 3 );
remove_action( 'network_admin_notices', 'update_nag', 3 );
remove_filter( 'the_content','wpautop' );
add_filter( 'show_admin_bar', '__return_false' );
3- Çekirdek İşlevler ve Özellikler
WordPress teknolojisinin sağladığı temel özelikler ve işlevler kullanılmalıdır. Aşağıda kullanılması zorunlu olan bu işlevlerin listesi verilmiştir:
Temanızın şu özellikleri, WordPress’in sunduğu temel işlevleri ile uyumlu olmalıdır.
- Otomatik besleme linkleri (Automatic Feed Links)
- Sidebar (Sayfa yanı) özelliği
- Menüler
- Öne Çıkan Görseller
- Üst Kısım Görselleri
- Arkaplan özelliği
- Editör Stili
- Logo
Bunların yanında temanızın kod yapısı şu özellikleri de taşımalıdır:
- WordPress’in çekirdek işlevleri ile ilgili API ya da fonksiyonlar kullanılmamalıdır.
- Herhangi bir WordPress özelliğini kısıtlayarak, kısıtı kaldırmak için ödeme istenemez.
- Herhangi bir içeriği modifiye etmek için, doğrudan kodlama (hard coding) değil de filter kancasını kullanın. Mesela,
wp_title()
fonksiyonunu modifiye ederek, sayfa başlıklarının tarayıcıdaki görünümünü değiştirebilirsiniz:
add_filter( 'wp_title', 'filter_functionunun_adi', 10, 2 );
- Temanız, yavru tema (child theme) kullanmaya hazır olmalıdır. Yani, bir yavru tema ile birlikte gönderilmelidir.
- Temanızın
style.css
dosyasındaki açıklamalar ve özellikler, gerçekten temanızın sunduğu özellikler olmalıdır.
WordPress, temamızın özelliklerini belirtirken, belli bir standart olsun diye, tema etiketleri (theme tags) belirlemiştir. Temanızınstyle.css
dosyasının başındaki yorum kısmında,Tags: ...
şeklinde bir satır vardır. Bu satırda, tema etiketlerden en fazla üç tanesini kullanabilirsiniz. - Tema fonksiyonları ve action/filter kancaları doğru bir şekilde kullanılmalıdır.
- Temanız, uygun bir şekilde kodlanmış bir
comments.php
dosyası içermelidir. Bu dosya, temamızın yorum sistemi şablonudur. - Temanız, geçmiş 3 major WordPress versiyonu ile uyumlu olmalıdır. Örneğin; şu an WordPress’in son versiyonu 5.3 ise, 5.0’a kadar uyumluluk gereklidir.
- Temalar, admin barını (yönetici girişi yapıldığında, sayfanın en üstünde oluşan siyah zeminli menü barı) saklayamaz ya da engelleyemez ya da silemez.
- Tema kurulumu ile ilgili WordPress’in çekirdek özellikleri değiştirilemez.
- Tema ile ilgili olarak yapacağınız bütün bildirimler, WordPress’in admin bildirimi API’sine uygun olmalıdır ve bu bildirimlerin kullanıcı tarafından istendiğinde gözardı edilmesi de mümkün olmalıdır.
WordPress Çekirdek Özellikleri ile İlgili Örnekler
TEMPLATEPATH
yerineget_template_directory()
fonksiyonu kullanın:
require_once( trailingslashit( get_template_directory() ) . 'inc/example.php' );
STYLESHEETPATH
yerineget_template_directory()
fonksiyonu kullanın:
require_once( trailingslashit( get_stylesheet_directory() ) . 'inc/example.php' );
- En az bir şablonunuzda
comments_template()
fonksiyonu kullanılmalıdır.
4- Yavru Tema (Child Theme)
Yavru temanız, gönderdiğiniz ana tema ile ilgi bir kaç küçük farklılık içermelidir. Ana temaya göre farklı olduğu tarafları da açıklanmalıdır. Bu açıklama, temanızın ehliyet yorumları kısmında yapılmalıdır.
5- Readme.txt Dosyası Formatı
Temanız ile ilgili bir takım bilgilerin verildiği readme.txt dosyası, değişken bir dosyadır, bu dosyada, zamanla bazı değişiklikler yapılabilmektedir. Bu dosya şu özellikleri taşımalıdır:
- Mutlaka bir başlık (header) kısmı olmalıdır ve başlık kısmında olması gereken bütün satırlar yer almalıdır. (Başlık kısmının yapısını görmeniz için aşağıda örnek bir
readme.txt
dosyası verilmiştir.) - Bu dosyanın, kurallara uygun olup olmadığını test etmek için kullanabileceğiniz bir readme.txt dosyası doğrulayıcısı vardır. Bu doğrulama aracı ile dosyanızı Stable tag uyarısı hariç diğer uyarılardan temizlemeniz gerekmektedir.
- Başlık kısmı (=== Theme Name ===) hariç, diğer kısımlar zorunlu değildir. Fakat, yazarlara, telif hakları kısmı ve linsans kısmını oluşturmaları, bu bölümleri bu dosyanın == Resources == bölümünde oluşturmaları tavsiye edilir.
Aşağıda örnekte bir readme.txt
dosyası verilmiştir:
readme.txt
=== Theme Name ===
Contributors: (Should only contain WordPress.org usernames.)
Requires at least: 5.0
Tested up to: 5.2
Requires PHP: 5.6
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Short description. No more than 150 chars.
== Description ==
Theme desc.
== Frequently Asked Questions ==
= A question that someone might have =
An answer to that question.
== Changelog ==
= 1.0 =
* Added new option
= 0.5 =
* Security bug addressed
* Changed thumbnail size
== Upgrade Notice ==
= 1.0 =
* Upgrade notices describe the reason a user should upgrade. No more than 300 characters.
= 0.5 =
* This version fixes a security related bug. Upgrade immediately.
== Resources ==
* magnify.jpg © 2014 Jane Doe, CC0
* supermenu.js © 2013-2015 James Today, MIT
6- Sunum mu? İşlevsellik mi?
- Tema seçenekleri, özel yazı tipleri içermemeli ve önemsizler dışında kullanıcı bilgilerini kaydetmemelidir.
- Tema, sunum ile ilgili olmayan bir özelliğe sahip olmamalıdır.
- Temanız için bir başlangıç içeriği veya kurulum rehberi oluşturun ve bu rehberi sadece
edit_theme_options
yeteneğine sahip olan kullanıcılar görebilsin, her ziyaretçiye açık olmasın. - Ön izleme/demo verilerini göstermek veya WordPress.org’da ön izlemeyi değiştirmek yasaktır ve kullanıcı hesabınızın sonlandırılmasına neden olabilir.
- Gutenberg editörü için özel bloklar oluşturmak yasaktır. Bunun için eklentiler (plugins) kullanılmalıdır.
- Yer tutucu veya varsayılan olarak kullanılan resimler; sabit renkli, gradyan veya desenli olmalı, logo içermemeli, resim boyutlarını ifade edenler dışında yazı içermemeli, logo olmadıkları sürece ikon içerebilir, üçüncü parti bir kaynaktan değil tema dosyaları arasından gelmelidir.
Eklentilerin (Plugins) Kapsamına Giren Özellikler
Temalarda aşağıdaki özellikler istenmez, çünkü bu özellikler eklentiler yoluyla kullanılmalıdır.
- Analizler veya ziyaretçi izleme desteği
- SEO seçenekleri
- İletişim Formları
- Sunum dışındaki amaçlar ile kullanılan meta boxlar
- Kaynak bellekleme – Resource caching
- Yönetim panelindeki dashboard bileşenleri
- Özel yazı tipleri ve kısa kodlar
- Sosyal medya butonları
- Gutenberg blokları
- Varsayılan logo
- Session kullanımı
Twenty Seventeen Temasının Başlangıç İçeriği
functions.php
function twentyseventeen_setup() {
28
106 add_theme_support( 'starter-content', array(
107 'widgets' => array(
108 'sidebar-1' => array(
109 'text_business_info',
110 'search',
111 'text_about',
112 ),
113
114 'sidebar-2' => array(
115 'text_business_info',
116 ),
117
118 'sidebar-3' => array(
119 'text_about',
120 'search',
121 ),
122 ),
123
124 'posts' => array(
125 'home',
126 'about' => array(
127 'thumbnail' => '{{image-sandwich}}',
128 ),
129 'contact' => array(
130 'thumbnail' => '{{image-espresso}}',
131 ),
132 'blog' => array(
133 'thumbnail' => '{{image-coffee}}',
134 ),
135 'homepage-section' => array(
136 'thumbnail' => '{{image-espresso}}',
137 ),
138 ),
139
140 'attachments' => array(
141 'image-espresso' => array(
142 'post_title' => _x( 'Espresso', 'Theme starter content', 'twentyseventeen' ),
143 'file' => 'assets/images/espresso.jpg',
144 ),
145 'image-sandwich' => array(
146 'post_title' => _x( 'Sandwich', 'Theme starter content', 'twentyseventeen' ),
147 'file' => 'assets/images/sandwich.jpg',
148 ),
149 'image-coffee' => array(
150 'post_title' => _x( 'Coffee', 'Theme starter content', 'twentyseventeen' ),
151 'file' => 'assets/images/coffee.jpg',
152 ),
153 ),
154
155 'options' => array(
156 'show_on_front' => 'page',
157 'page_on_front' => '{{home}}',
158 'page_for_posts' => '{{blog}}',
159 ),
160
161 'theme_mods' => array(
162 'panel_1' => '{{homepage-section}}',
163 'panel_2' => '{{about}}',
164 'panel_3' => '{{blog}}',
165 'panel_4' => '{{contact}}',
166 ),
167
168 'nav_menus' => array(
169 'top' => array(
170 'name' => __( 'Top Menu', 'twentyseventeen' ),
171 'items' => array(
172 'page_home',
173 'page_about',
174 'page_blog',
175 'page_contact',
176 ),
177 ),
178 'social' => array(
179 'name' => __( 'Social Links Menu', 'twentyseventeen' ),
180 'items' => array(
181 'link_yelp',
182 'link_facebook',
183 'link_twitter',
184 'link_instagram',
185 'link_email',
186 ),
187 ),
188 ),
189 ) );
190 }
191 add_action( 'after_setup_theme', 'twentyseventeen_setup' );
7- İçe Aktarma ve İndirme
- Tema bir kullanıcın sitesine içerik aktaramaz.
- Temalar, XML, JSON, ZIP, veya başka bir uzantıda dosya içeren bir sayfaya, bu dosyaları indirmek ya da içe aktarmak için doğrudan bağlantı veremezler.
- Temaların demo içeriğini, bir XML, JSON, ZIP veya başka dosyalar aracılığıyla toplamasına izin verilmez.
Eğer One Click Demo Impor eklentisi kullanıyorsanız, aşağıdaki ayarlar doğrudan indirmek olarak kabul edilir ve izin verilmez:
'import_file_url' => 'your-domain/demo.xml',
'import_widget_file_url' => 'https://raw.githubusercontent.com/your-username/repo/master/widgets.wie',
'import_customizer_file_url' => 'your-domain/customizer.dat'
8- Dökümantasyon
Temanızın kendine has özellikleri, şablonları veya bilinmesi gereken başka işlevleri veya kısıtlamaları varsa, bunların bir dokümantasyon ile açıklanması gerekmektedir.
9- Dil
- Bütün temaların metinleri tercüme edilebilir olmalıdır.
- Temanın
style.css
dosyasında bir text-domain belirlenmiş olmalıdır. - Tema için benzersiz bir kimlik adı (slug) gerekir. Bu kimlik değeri
sytle.css
dosyasındakiTheme Name
değerinden türetilir. - Temanız, fontawesome veya bootstrap gibi bazı kütüphaneleri kullanabilir.
- Temanızda, bütün metinler için aynı olmak koşulu ile dilediğiniz dili kullanabilirsiniz.
- Temanızda bir POT dosyası bulundurmak istiyorsanız, bu dosya, temanızdaki bütün metinleri içeren en güncel şekliyle bulunmalıdır.
Tema Dili ile İlgili Örnekler
- Text-domain ifadesi tema adından üretilmelidir:
Theme Name: Mim's Debacle
Text Domain: mims-debacle
- Tema yazarları, WordPress’in varsayılanı yerine kendi dil klasörlerini ayarlayabilirler. Aşağıda bunun bir örneği verilmiştir:
Ana tema için text-domain belirleme:
add_action( 'after_setup_theme', 'theme_review_setup' );
function theme_review_setup(){
load_theme_textdomain( 'theme-slug', get_template_directory() . '/languages' );
}
Yavru tema için text-domain belirleme:
add_action( 'after_setup_theme', 'theme_review_child_domain', 11 );
function theme_review_child_domain(){
load_child_theme_textdomain( 'child-slug', get_stylesheet_directory() . '/languages' );
}
10- Tema Lisansı
- Tema %100 GPL ve/veya %100 GPL Uyumluluğu lisansına sahip olmalıdır. Yani, sitenizde kullandığını bütün resim, logo, font, ikon… gibi nesnelerin herhangi bir telif hakkı ya da kısıtlaması olmamalıdır.
- Temanın telif hakkı ve lisans durumunu açıkça belirtmelisiniz. Lisansını ve lisansın URL değerini belirtmek için, temanın
style.css
dosyası kullanılmalıdır. - Temanızda kullandığınız, resim ve fontlar gibi bütün içeriğin lisans durumunu açıkça belirtmelisiniz.
- Bütün kodlar ve tasarım size ait olmalıdır. Klonlanmış tasarımlar kabul edilmez.
- Temanın ön yüzündeki herhangi bir telif hakkı ifadesi, temanın yazarının telif hakkını değil, kullanıcının telif hakkını göstermelidir.
11- Adlandırma
- Tema adında şu ifadelere izin verilmez: WordPress, Twenty, Twenty*
- Alt temalar, aynı yazara sahip olmadıkları sürece ana temanın adını içermemelidir.
- Temanızın ön yüzünde WordPress kelimesini kullanırken W ve P harflerini büyük yazmalısınız.
12- Seçenekler ve Ayarlar
- Temanıza, özelleştirme seçenekleri eklemek için Customizer kullanın.
- Seçenekleri tek bir dizide toplayın.
- Geçici seçenekleri, tema seçeneklerini kaydetmek gibi kullanılmaması gereken şeyler için kullanmayın.
- Varsayılan ayarlarınız makul düzeyde olsun ve bu ayarlarınızı veritabanına kaydetmeyin.
- Tema ayarlarınız için
edit_theme_options
yetkisinden başkasına güvenmeyin.
13- Eklentiler
- Temalar eklenti içeremez.
- Temalar eklentilerin alanına giren özellikleri içeremez.
- Temalar, çalışmak için bir eklentiye muhtaç olamaz.
- Temalar, WordPress.org adresinden tema önerisinde bulunabilirler.
- Temalar zorunlu (
'required' => true
) özelliği ile eklenti yükleyemez. - Temalar kod kütüphaneleri içerebilir.
- Temalar, WordPress.org himayesi dışında kalan ve GPL uyumlu eklentileri tavsiye edebilir. Bu tavsiyeler, temanın
readme.txt
dosyasında ya da teme bilgisi sayfasında yapılabilir, fakat bu eklentilerin indirilebileceği doğrudan linklere izin verilmez. Tavsiye ettiğiniz eklentinin sayfasına link verebilirsiniz fakat indirme sayfasına veremezsiniz.
14- Temanın Ekran Görüntüsü (screenshot.png)
screenshot.png
, temanın nasıl göründüğünden sorumlu olan dosyadır.- Ekran görüntüsü, temanın desteklediği eklentileri ya da ayarları da içerebilir.
- Ekran görüntüsü, bir logo veya buna benzer bir görüntü olamaz.
- Ekran görüntüsü 1200 x 900px ölçülerinden daha büyük olamaz.
- Genişlik:yükseklik oranı 4:3 olmalıdır.
- Ekran görüntüsünde sadece dummy textlere (Lorem ipsum…) izin vardır. Bu textler de reklam havası vermemelidir.
15- Gizlilik
- Kullanıcıların izni olmadan herhangi bir veri toplamayın. Kullanıcı izni ile veri toplama özelliğiniz var ise temanızda varsayılan olarak bu özellik kapalı olsun.
bit.ly
,bit.do
,goo.gl
gibi servislerin kısa URL yapılarını kullanmayın.
16- Görsel Kuralları
- Çocukların yüzünün veya vücutlarını göründüğü resimler kabul edilmez.
17- Satış, Krediler ve Linkler
- Temanızın demosunu sunduğunuz veya temanız hakkında bilgiler içeren bir URI adresi vermeniz zorunlu değildir.
- Temanıza ait bir URI adresi varsa, bu adresin içeriği sadece WordPress.org arşivinde yayınlanacak olan temanız hakkında olmalıdır.
- Temanızın URI adresi için WordPress.org adresini kullanamazsınız.
- Yazarın URI adresi zorunlu değildir.
- Eğer yazarın URI adresi verilecekse, bu adres, yazar hakkında bilgilerin olduğu bir sayfaya, web sitesine, yazara ait bir tema mağazasına ya da yazarın bir projesi ya da ürünü olan bir web sitesine ait olmalıdır.
- Temanın alt kısmında (footer),
sytle.css
dosyasında belirtilen yazara ait ya da temaya ait url ifadelerinden sadece birine ait bir bağlantı oluşturabilirsiniz. - Temanın alt kısmında (footer), WordPress.org adresine ait bir bağlantı oluşturabilirsiniz.
- Sitenizde sattığınız ürünlerin, GPL uyumlu olduğunu açık bir şekilde ifade etmelisiniz. Bunu ifade ettiğiniz kısım, müşteri ya da ziyaretçilerinizin kolayca bulabileceği bir yer olmalıdır.
- Temanızda sunduğunuz ek özellikler, rahatsız edici ve genel kullanım akışını etkileyecek şekilde olmamalıdır.
- Temalar bir firmaya ait bir URL veya link içeremezler.
Rahatsız Etmeyen Ek Özelliklere Örnekler
- Temanın text-domaini yine temanın kimlik adından (slug) üretilmelidir.
- Admin panelinde oluşturulan bildirim ya da uyarılar, istendiğinde kaldırılabilir olmalıdır (dismissible). Yani bir uyarı kapatıldığında kalıcı olarak ortadan kaybolmalıdır.
- Yönetici panelinin kenar çubuğundaki Görünüm bölümünün altında yalnızca TGMPA eklenti kurulum sayfasına ek olarak bir alt sayfaya izin verilir.
- Özelleştirme sayfasında, en üst düzeydeki yalnızca bir bağlantıya izin verilir. Bu bağlantı Customizer API kullanılarak yapılmalıdır (JavaScript yoluyla enjekte edilmeden).
- Hiç bir seçenek ya da panel bir ödeme şartı koşularak kilitlenemez.
- Temanın bütün ayarları çalışmalıdır
Tema Kullanıcılarına Ait Sosyal Medya Hesapları
- Kullanıcıların, ikonları ile birlikte sosyal medya hesabı eklemesine izin verilir.
sharer.php?
gibi basit sosyal medya paylaşım bağlantılarına izin verilir.- Sosyal medya için “Beğen” ve “Takip et” butonlarına izin verilmez.
Tema Yazarına Ait Sosyal Medya Hesapları
- Yazarın sosyal medya hesabını eklemesine izin verilir.
- Sosyal medya için “Beğen”, “Takip et” ve “Paylaş” butonlarına izin verilmez.
18- Stil ve Scriptler
- CSS ve JavaScript dosyalarını hard coding olarak eklemeye izin verilmez.
- Orijinal dosyaları yoksa, minimize edilmiş dosyalara izin verilmez.
- WordPress, jQuery gibi bir çok JavaScript kütüphanesi yüklü bir şekilde gelir. Bu kütüphaneleri kullanmak için tekrar yüklenmek yanlıştır, bunun yerine çekirdekte bulunan paketleri kullanılmalıdır.
- Google fontları hariç, kullandığınız bütün kaynakları, dış bağlantılar olarak değil de temanıza dahil ederek kullanmalısınız.
Temaya CSS veya JavaScript Ekleme Örnekleri
CSS dosyası ekleme yanlış örneği:
<link type="text/css" rel="stylesheet" href="benim-dosyam.css" />
CSS dosyası ekleme doğru örneği:
function tema_scriptleri() {
wp_enqueue_style( 'benim-stilim', get_template_directory_uri() . '/css/stilim.css', false, '1.1', 'all');
}
add_action( 'wp_enqueue_scripts', 'tema_scriptleri' );
Temanın header.php
dosyasına doğrudan CSS kodu eklemek yanlıştır. Onun yerine wp_add_inline_style()
fonksiyonu kullanılır:
add_action( 'wp_enqueue_scripts', 'theme_review_styles' );
function theme_review_styles() {
$custom_css = '
.mycolor {
background: red;
}';
wp_add_inline_style( 'benim-stilim', $custom_css );
}
Yukarıdaki kod, header.php
dosyasında, 'benim-stilim'
dosyasından hemen sonra bir stil kodu olarak eklenecektir.
Temaya bir JavaScript dosyası eklemenin doğru yolu wp_enqueue_scripts
kancasını kullanmaktır:
add_action( 'wp_enqueue_scripts', 'theme_review_slider_options' );
function theme_review_slider_options() {
wp_enqueue_script( 'theme-slider', get_template_directory_uri() . '/js/theme-slider.js', array( 'jquery' ), '1.0.0', false );
wp_enqueue_script( 'theme-slider-init', get_template_directory_uri() . '/js/init.js', array( 'jquery', 'theme-slider' ), '1.0.0', false );
// Get user options.
$options = array();
$options['autoplay'] = esc_attr( get_theme_mod( 'slider-autoplay', true ) );
$options['navigation_style'] = esc_attr( get_theme_mod( 'nav-style', 'circles' ) );
wp_localize_script( 'theme-slider-init', 'themeSliderOptions', $options );
}
Temaya inline JavaScript kodu eklemenin yoluwp_add_inline_script()
fonksiyonudur:
add_action( 'wp_enqueue_scripts', 'theme_review_add_inline_script' );
function theme_review_add_inline_script() {
wp_add_inline_script(
'benim-scriptim',
'$(document).ready( function() {
$(".selector").hide();
}'
);
}
Yukarıdaki kod, temada, header.php
ya da footer.php
dosyalarında, 'benim-scriptim'
dosyasından hemen sonra sayfaya eklenecektir.
Harici kaynaklar ile ilgili olarak:
- Herhangi bir dış beslemeyi kodunu ya da dosyasını temanızda yayımlayamazsınız fakat bağlantısını paylaşabilirsiniz.
- Kendi beslemenizi (feed) yayımlayamazsınız fakat bağlantısını paylaşabilirsiniz.
- Harici bir videoyu paylaşamazsınız fakat bağlantısını paylaşabilirsiniz.
- Kendi sitenizden logo, teklif ya da reklam paylaşamazsınız.
- Google maps ya da Instagram kullanmak amacıyla da olsa harici bir API kullanamazsınız.
Şablonlar
Şablon dosyalarını çağırırken, bu dosyaları çağırmak için üretilmiş fonksiyonlar tercih edilmelidir:
header.php
(get_header()
ile çağırılır.)footer.php
(get_footer()
ile çağırılır.)sidebar.php
(get_sidebar()
ile çağırılır.)searchform.php
(get_search_form()
ile çağırılır.)
İlgili şablon dosyalarında aşağıdaki fonksiyonlar kullanılmalıdır:
wp_head()
– (</head>
tagından hemen önce)body_class()
– (<body>
tagının içinde)$content_width
post_class()
wp_link_pages()
the_comments_navigation()
,the_comments_pagination()
the_posts_pagination()
,the_posts_navigation()
wp_footer()
– (</body>
tagından hemen önce)
- Geçerli bir DOCTYPE tipi belirtilmeli ve dosyanın dili
language_attributes()
fonksiyonu ile belirtilmelidir. - Kendinize özel şablon dosyalarınınız varsa
get_template_part()
veyalocate_template()
fonksiyonları ile çağırılmalıdır. - Ön sayfa (front page) içeriğiniz ve ön sayfa olarak kullandığınız sayfa doğru şekilde ayarlamalıdır.
Sonuç
WordPress takımı, bahsettiğimiz bu zorunlu özellikleri otomatikleştirmek için çalışmalarına devam etmektedir.
Yukarıda bahsedilen özellikler, temanızın onay almasını sağlar fakat en iyi tema olmasına yetmeyebilir. Bu özelliklerin dışında, temanızı en iyiler arasına sokabilmeniz için tavsiye edebileceğimiz başka özellikler de vardır. Okumaya devam ediniz…
okul zemin kaplama says:
paylaşım için teşekkürler
Gökalp AY says:
🙂 Yorum için de biz teşekkür ederiz.
Mine says:
Yazınızdan çok faydalandım, Teşekkür ederim. Emeğinize sağlık