WordPress web sitesine e-ticaret özelliği kazandırmamıza yardımcı olan
WooCommerce eklentisinden
WordPress WooCommerce Online Alışveriş Eklentisi başlıklı yazıda detaylıca bahsetmiştim. Bu eklenti temelinde ilgili yazıya dair bir kaç ek yapmak istiyorum; koşul etiketleri, sayfa özelleştirme, tema entegrasyonu,
REST API kullanımı ve tracking (
Google Tag Manager aracılığıyla;
Google Analytics ve
Facebook Pixel için) ve
raporlama. Bu yazının konusu da başlıklardan ilki olan
koşul etiketleri.

WordPress tema ve eklenti düzenlemelerinde sıklıkla faydalandığımız,
conditional tags (koşul etiketleri) olarak ifade edilen bazı özel fonksiyonlar bulunuyor. Bu fonksiyonlar aracılığıyla görüntülenen içeriğin sayfa ve kullanıcı temelinde ilişkilendirildiği durumları (sayfa tipi (arama sayfası, post, page, özel sayfa, 404, vb.), bir plugin’in aktif olup olmadığı, sitenin multisite olup olmadığı, yorumun açık olup olmadığı, kullanıcının login olup olmadığı, kullanıcının admin olup olmadığı…) tanımlamaktalar. Örneğin, bir blog yazısı yayınlandığında genellikle post sayfa tipinde (post_type), hakkımızda, iletişim gibi sayfalar ise genellikle page sayfa tipinde olacaklardır. Dolayısıyla bu tür sayfalarla ilişkili / sadece bu sayfalarda aktif olacak işlemler yapmak istediğimizde
is_single(),
is_page() gibi tanımlı fonksiyonları kullanırız. İlgili şart sağlandığında, örneğin
, ilgili fonksiyon
true
, aksi durumda
false
değeri dönecektir. Hatta bu tanımlamaları ilgili post ID, Title, post_name, post_title gibi değerlerle de sınırlandırabilir,
array
ile çoklu hale getirebiliriz.

Bu sayede ilgili içerik alanları dahilinde pek çok özelleştirme gerçekleştirilebilmekte. Tabi koşul etiketleri sadece
is_single()
ve
is_page()
ile sınırlı değil.
is_admin()
,
is_home()
,
is_front_page()
,
comments_open()
,
is_page_template()
,
is_category()
,
is_search()
,
is_404()
,
is_multisite()
,
is_plugin_active()
,
wp_script_is()
gibi daha pek çok koşul etiketi kullanılabilir şekilde
WordPress Codex > Conditional Tags sayfasında örnekleriyle birlikte listelenmiş durumda. İlerleyen zaman içerisinde kamsamlı bir şekilde konuyu ele almak gerekirmi emin değilim, sorularınız olursa mesaj olarak gönderebilirsiniz. O halde, bu yazının da amacı olan
WooCommerce temelinde koşul etiketlerinin nasıl ele aldındığına bakalım.
Normal şartlarda (örneğin WooCommerce eklentisinin kurulu olmadığı bir durumda)
$post->post_type
WordPress temelinde tanımlı olan bir kaç tipten birini bize döndürür:
- Post (post_type: ‘post’, conditional_tag: is_single())
- Page (post_type: ‘page’, conditional_tag: is_page())
- Attachment (post_type: ‘attachment’, conditional_tag: is_attachment())
- Revision (post_type: ‘revision’)
- Navigation Menu (post_type: ‘nav_menu_item’)
- Custom CSS (post_type: ‘custom_css’)
- Changesets (post_type: ‘customize_changeset’)
- User Data Request (post_type: ‘user_request’ )
Ancak,
register_post_type()
ile biz de bir post tipi oluşturabiliriz. WooCommerce işte tam olarak bunu yapıyor ve ürün sayfaları için post_type’ın
product olarak dönmesini sağlıyor. Ek olarak, koşul etiketi olarak da
is_product()
ile sayfa temelinde, tıpkı
is_single()
gibi işlemler yapabilmemiz mümkün hale geliyor. Öncelikle bu post tipinin nasıl tanımlanabileceğine bakalım. Aşağıda
book olarak tanımlı bir post tipinin nasıl oluşturulduğunu görebilirsiniz:
<?php
function create_post_type() {
register_post_type( 'book',
array(
'labels' => array(
'name' => __( 'Books' ),
'singular_name' => __( 'Book' )
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'books'),
)
);
}
add_action( 'init', 'create_post_type' );
?> |
<?php
function create_post_type() {
register_post_type( 'book',
array(
'labels' => array(
'name' => __( 'Books' ),
'singular_name' => __( 'Book' )
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'books'),
)
);
}
add_action( 'init', 'create_post_type' );
?>
Bu kodu
functions.php
sayfasına yerleştirip WP Admin paneline göz attığınızda, sol alanda
Books başlığını görebilirsiniz. Evet, yeni bir
post tipi oluşturmak için tek yapmamız gereken bu.

Bu temel post tipi açıklaması ardından (evet, bu konuyu da kısa tutacağım) WooCommerce’in
is_product()
başta olmak üzere sunduğu koşul etiketlerinden bahsetmeye başlayabilirim. Kitap örneğinde post tipi bize
book
, WooCommerce ürün sayfaları da
product
değerlerini bize döndüreceklerdir. WooCommerce post tipi sorgulamakla veya
is_single()
ile uğraşmamamız için özelleştirilmiş etiketler sunar. Az önce de bahsettiğim
is_product()
bunlardan sadece
biri. Peki, WooCommerce işlemleri için başka hangi koşul etiketlerini hangi amaçlar için kullanabiliriz?

Evet, bahsetmemin uygun olacağını düşündüğüm ön bilgilerin ardından artık WooCommerce temelinde sunulan koşul etiketlerine bakabiliriz. İlk olarak
is_product()
ile başlayalım.
is_singular()
tarafından da
kapsanan, ürün detay sayfalarını tanımlar (
true
değerini döndürür). Bir sayfanın ürün sayfası olup olmadığını
post_type
kontrolü dışında
is_product()
ile sağlayabilir ve bu şart dahilinde istediğiniz işlemlerin uygulanmasını sağlayabilirsiniz.
Eğer şart dahilinde görüntülenen sayfa bir WooCommerce şablonu (template) ise
true
değerini döndürür.
Ürün arşiv sayfasını (ürün listeleme) tanımlar.
Herhangi bir ürün kategori sayfası görüntülendiğinde
true
değerini döner.
Sepet sayfası görüntülendiğinde
true
değerini verir.
Ödeme sayfası görüntülendiğinde
true
değerini alırız.
WooCommerce bitiş noktalarından (endpoint) biri (ödeme sonuç sayfası, sipariş görüntüleme, adres değiştirme, ödeme yöntemi ekleme vb.) görüntülendiğinde
true
değeri döner. Alt başlık olarak bu bitiş noktalarından bazılarına da değinmek istiyorum.
Sipariş ödeme sayfası görüntülendiğinde
true
değerini alırız.
Ödeme işlemi tamamlanmasıyla birlikte
true
değerini alırız.
Sipariş görüntülendiğinde
true
değerini alırız.Elbette koşulların hepsi bu kadar değil! Daha detaylı bilgi ve örnekler için
WooCommerce Docs > Conditional Tags sayfasını inceleyebilirsiniz. Yukarıda bahsi geçen koşul etiketleri ara ara bahsettiğim gibi pek çok amaç için kullanılabilirler. Benim özellikle üzerinde duracağım husus ise E-ticaret verilerinin
Google Analytics ve
Facebook Standart Olaylar üzerinden raporlara yansıtılabilmesi süreci olacak. Eklenecek diğer yazılar ve video anlatımları için e-bültene kayıt olabilir,
Youtube kanalımı takibe alabilirsiniz.