BU DERSİN BAŞLIKLARI
WordPress sadece temanızı değil, aynı anda bir çok eklentiyi de çalıştırmaktadır. Bu eklentilerin, her birinin, kendi CSS ve JavaScript dosyaları vardır. Her şeyin uyum içinde çalışabilmesi için, siz de temanıza eklemek istediğiniz CSS ve JavaScript dosyalarını WordPress’in kurallarına göre eklemelisiniz. Bu, herhangi bir yan etki veya uyumsuzluk sorunuyla karşılaşmanızı engelleyecektir.
WordPress’e bir CSS veya JavaScript dosyası eklemek basit bir işlemdir. Bunun için, bir fonksiyon yardımı ile dosyanızı eklemeniz ve bir kanca yardımı ile de, WordPress’e, bu dosyayı ne zaman çağıracağını söylememiz yeterlidir.
JavaScript ve CSS Ekleme
Temanıza, CSS ve script dosyaları kullanmanın en uygun yolu, bu dosyaları functions.php dosyanızda eklemektir.
WordPress, bazı yaygın JavaScript kütüphaneleri ile birlikte gelir. Bunlar, JQuery gibi yaygın olarak kullanılan kütüphanelerdir. Bu yüzden, bir kütüphane eklemeden önce, WordPress’te bu kütüphanenin, zaten var olup olmadığını kontrol etmeniz doğru olacaktır. Bu yazının sonunda, WordPress kurulumu ile birlikte gelen JavaScript kütüphanlerinin listesi verilmiştir.
WordPress’e bir CSS veya JavaScript dosyası eklemek için kullandığımız fonksiyonlar şunlardır:
wp_enqueue_style()wp_enqueue_script()
Stil Dosyaları (CSS)
Her temanın zorunlu dosyası olan, style.css dosyası, hem temanızı şekillendirir hem de WordPress’e, temanız hakkında gerekli bilgileri verir.
style.css dosyasını çağırmak için functions.php dosyanıza şöyle bir kod yazmalısınız:
function tema_scriptleri() {
wp_enqueue_style( 'ana-stil', get_stylesheet_uri() );
}
add_action( 'wp_enqueue_scripts', 'tema_scriptleri' );
wp_enqueue_style() fonksiyonunun temel yapısı şöyledir:
wp_enqueue_style( $handle, $src, $deps, $ver, $media );
Gördüğünüz gibi, bu fonksiyon beş parametre almaktadır. Bu parametrelerin anlamları şöyledir:
- $hadle: Zorunludur. Eklediğiniz dosyayı tanıtan herhangi bir addır. Boşluksuz ve Tükçe karakter içermemelidir.
- $src: Dosyanın bulunduğu adrestir.
- $deps: Dizidir. Dosyanızın, hangi dosyalardan sonra eklenmesi gerektiğini belirtir. Yani, dosyanızın düzgün çalışabilmesi için, eklenmiş dosyalar arasından, ihtiyaç duyduklarının, “$handle” değerleridir. (Nasıl ki, bu dosyayı eklerken bir ad ($handle) verdiysek, WordPress’te, eklenmiş bütün dosyaların bir adı vardır.) Eğer dosyamız bağımsız çalışabilecek bir dosya ise, bu parametreye
falsedeğeri veriyoruz. - $ver: Eklenen dosyanın versiyonudur.
- $media: Dosyanızın, çalışmasını istediğiniz ekran türünü veya ekran büyüklüğünü belirtir. “all“, “print” ve “screen” almak üzere üç değer alır. Varsayılan değeri “all”, yani bütün ekranlardır.
Mesela, CSS klasörünün içinde stilim.css adında bir stil dosyanız var diyelim. Bu dosyayı "benim-stilim" adını vererek eklemek için şu kodu kullanırsınız:
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' );
Scriptler (JavaScript)
Temanızın ihtiyaç duyduğu bütün ekstra JavaScript dosyalarını wp_enqueue_script() fonksiyonunu kullanarak ekleyebilirsiniz. Bu fonksiyon da, wp_enqueue_style() fonksiyonu ile benzer parametreler alır.
wp_enqueue_script() fonksiyonunun temel yapısı şöyledir:
wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer);
Gördüğünüz gibi, bu fonksiyon beş parametre almaktadır. Bu parametrelerin anlamları şöyledir:
- $hadle: Zorunludur. Eklediğiniz dosyayı tanıtan herhangi bir addır. Boşluksuz ve Tükçe karakter içermemelidir.
- $src: Dosyanın bulunduğu adrestir.
- $deps: Dizidir. Dosyanızın, hangi dosyalardan sonra eklenmesi gerektiğini belirtir. Örneğin, jQuery kütüphanesine gereksinim duyacak bir kod yazdıysanız, burada jquery’nin önce yüklenmesi gerektiğini belirtmelisiniz. Eğer dosyanız bağımsız çalışabilecek bir dosya ise, bu parametreye
falsedeğeri veriyoruz. - $ver: Eklenen dosyanın versiyonudur.
- $in_footer:
truederseniz, dosyanız sayfanın en altına eklenir,falsederseniz sayfanın en üstüne eklenir.
Mesela, JS klasörünün içinde slider.js adında bir script dosyanız varsa ve bu script jquery içeriyorsa, bu dosyayı eklemek için şu kodu kullanırsınız:
function tema_scriptleri() {
wp_enqueue_script( 'slider-icin', get_template_directory_uri() . '/js/slider.js', array ( 'jquery' ), 1.1, true);
}
add_action( 'wp_enqueue_scripts', 'tema_scriptleri' );
Yorum Cevaplama Scripti
WordPress, gelişmiş bir yorum scripti ile birlikte gelir, fakat, yorum cevaplama özelliğini kullanmak bize bırakılmıştır. Bu özelliğin çalışabilmesi için, ihtiyaç duyduğu JavaScript’i biz eklemeliyiz. Bunu yapmak için, functions.php dosyasına şu kodu eklemek yeterli olacaktır:
function tema_scriptleri() {
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
}
add_action( 'wp_enqueue_scripts', 'tema_scriptleri' );
Bu kod, tek bir içeriğin gösterildiği sayfada ve kullanıcı yorumları açıkken ve bizim ayarladığımız cevap derinliğine uygun olarak, yorum cevapları için gerekli scripti ekler.
Koşullu ve Toplu Ekleme
function tema_scriptleri() {
wp_enqueue_style( 'ana-stilim', get_stylesheet_uri() );
wp_enqueue_style( 'resim-kaydirici', get_template_directory_uri() . '/css/slider.css', array(), '1.1', 'all');
wp_enqueue_script( 'js-kodlarim', get_template_directory_uri() . '/js/script.js', array ( 'jquery' ), 1.1, true);
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
}
add_action( 'wp_enqueue_scripts', 'tema_scriptleri' );
Örnekte de görüldüğü gibi, CSS ve JavaScript dosyalarını topluca ve belli koşullar öne sürerek ekleyebiliriz. Bunun için, kodlarımızı bir fonksiyon içine alırız ve bu fonksiyonu, add_action() fonksiyonuna, wp_enqueue_scripts kancası takarak çağırırız.
CSS ve JavaScript dosyalarınızı, temanın genel özelliklerini ekledikten sonra eklemeniz önerilir.
WordPress Kurulumuyla Birlikte Gelen Scriptler
| Script Adı | Adı ($handle) | Gereksinimi* |
|---|---|---|
| Image Cropper | Image cropper (not used in core, see jcrop) | yok |
| Jcrop | jcrop | yok |
| SWFObject | swfobject | yok |
| SWFUpload | swfupload | yok |
| SWFUpload Degrade | swfupload-degrade | yok |
| SWFUpload Queue | swfupload-queue | yok |
| SWFUpload Handlers | swfupload-handlers | yok |
| jQuery | jquery | json2 (for AJAX calls) |
| jQuery Form | jquery-form | jquery |
| jQuery Color | jquery-color | jquery |
| jQuery Masonry | jquery-masonry | jquery |
| jQuery UI Core | jquery-ui-core | jquery |
| jQuery UI Widget | jquery-ui-widget | jquery |
| jQuery UI Mouse | jquery-ui-mouse | jquery |
| jQuery UI Accordion | jquery-ui-accordion | jquery |
| jQuery UI Autocomplete | jquery-ui-autocomplete | jquery |
| jQuery UI Slider | jquery-ui-slider | jquery |
| jQuery UI Progressbar | jquery-ui-progressbar | jquery |
| jQuery UI Tabs | jquery-ui-tabs | jquery |
| jQuery UI Sortable | jquery-ui-sortable | jquery |
| jQuery UI Draggable | jquery-ui-draggable | jquery |
| jQuery UI Droppable | jquery-ui-droppable | jquery |
| jQuery UI Selectable | jquery-ui-selectable | jquery |
| jQuery UI Position | jquery-ui-position | jquery |
| jQuery UI Datepicker | jquery-ui-datepicker | jquery |
| jQuery UI Tooltips | jquery-ui-tooltip | jquery |
| jQuery UI Resizable | jquery-ui-resizable | jquery |
| jQuery UI Dialog | jquery-ui-dialog | jquery |
| jQuery UI Button | jquery-ui-button | jquery |
| jQuery UI Effects | jquery-effects-core | jquery |
| jQuery UI Effects – Blind | jquery-effects-blind | jquery-effects-core |
| jQuery UI Effects – Bounce | jquery-effects-bounce | jquery-effects-core |
| jQuery UI Effects – Clip | jquery-effects-clip | jquery-effects-core |
| jQuery UI Effects – Drop | jquery-effects-drop | jquery-effects-core |
| jQuery UI Effects – Explode | jquery-effects-explode | jquery-effects-core |
| jQuery UI Effects – Fade | jquery-effects-fade | jquery-effects-core |
| jQuery UI Effects – Fold | jquery-effects-fold | jquery-effects-core |
| jQuery UI Effects – Highlight | jquery-effects-highlight | jquery-effects-core |
| jQuery UI Effects – Pulsate | jquery-effects-pulsate | jquery-effects-core |
| jQuery UI Effects – Scale | jquery-effects-scale | jquery-effects-core |
| jQuery UI Effects – Shake | jquery-effects-shake | jquery-effects-core |
| jQuery UI Effects – Slide | jquery-effects-slide | jquery-effects-core |
| jQuery UI Effects – Transfer | jquery-effects-transfer | jquery-effects-core |
| MediaElement.js (WP 3.6+) | wp-mediaelement | jquery |
| jQuery Schedule | schedule | jquery |
| jQuery Suggest | suggest | jquery |
| ThickBox | thickbox | yok |
| jQuery HoverIntent | hoverIntent | jquery |
| jQuery Hotkeys | jquery-hotkeys | jquery |
| Simple AJAX Code-Kit | sack | yok |
| QuickTags | quicktags | yok |
| Iris (Colour picker) | iris | jquery |
| Farbtastic (deprecated) | farbtastic | jquery |
| ColorPicker (deprecated) | colorpicker | jquery |
| Tiny MCE | tiny_mce | yok |
| Autosave | autosave | yok |
| WordPress AJAX Response | wp-ajax-response | yok |
| List Manipulation | wp-lists | yok |
| WP Common | common | yok |
| WP Editor | editorremov | yok |
| WP Editor Functions | editor-functions | yok |
| AJAX Cat | ajaxcat | yok |
| Admin Categories | admin-categories | yok |
| Admin Tags | admin-tags | yok |
| Admin custom fields | admin-custom-fields | yok |
| Password Strength Meter | password-strength-meter | yok |
| Admin Comments | admin-comments | yok |
| Admin Users | admin-users | yok |
| Admin Forms | admin-forms | yok |
| XFN | xfn | yok |
| Upload | upload | yok |
| PostBox | postbox | yok |
| Slug | slug | yok |
| Post | post | yok |
| Page | page | yok |
| Link | link | yok |
| Comment | comment | yok |
| Threaded Comments | comment-reply | yok |
| Admin Gallery | admin-gallery | yok |
| Media Upload | media-upload | yok |
| Admin widgets | admin-widgets | yok |
| Word Count | word-count | yok |
| Theme Preview | theme-preview | yok |
| JSON for JS | json2 | yok |
| Plupload Core | plupload | yok |
| Plupload All Runtimes | plupload-all | yok |
| Plupload HTML4 | plupload-html4 | yok |
| Plupload HTML5 | plupload-html5 | yok |
| Plupload Flash | plupload-flash | yok |
| Plupload Silverlight | plupload-silverlight | yok |
| Underscore js | underscore | yok |
| Backbone js | backbone | yok |
Artık kullanılmayan scriptler:
| Script Adı | Adı ($handle) | İptal Versiyonu | Yerine Gelen |
|---|---|---|---|
| Scriptaculous Root | scriptaculous-root | WP 3.5 | Google Version |
| Scriptaculous Builder | scriptaculous-builder | WP 3.5 | Google Version |
| Scriptaculous Drag & Drop | scriptaculous-dragdrop | WP 3.5 | Google Version |
| Scriptaculous Effects | scriptaculous-effects | WP 3.5 | Google Version |
| Scriptaculous Slider | scriptaculous-slider | WP 3.5 | Google Version |
| Scriptaculous Sound | scriptaculous-sound | WP 3.5 | Google Version |
| Scriptaculous Controls | scriptaculous-controls | WP 3.5 | Google Version |
| Scriptaculous | scriptaculous | WP 3.5 | Google Version |
| Prototype Framework | prototype | WP 3.5 | Google Version |
serhat says:
hocam sadece wp_enqueue_script( ‘comment-reply’ ); seklinde yazarsak olurmu ?
Muzaffer KAYA says:
Serhat Bey olur tabi ki. Fakat, SEO için sayfaların açılma hızı çok önemlidir, sayfaların açılma hızı için de gereksiz sorguların kullanılmaması çok önemlidir. Yani, yorumların görünmediği sayfalarda, yorum cevapları için gerekli bir dosyayı çağırmak, sayfamızı gereksiz yere yavaşlatacaktır. Google yavaş açılan sayfaları sevmez.