WooCommerce

WooCommerce Koşul Etiketleri (Conditional Tags)

Güncelleme:
Wordpress tema ve eklenti işlemlerinde sıklıkla ihtiyaç duyduğumuz ve oluşturulan şartlar bağlamında işlemler yapmamıza olanak sağlayan koşul etiketlerinin WooCommerce özelleştirmelerine bir bakalım.
GÖRSEL
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 birkaç 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.

Koşul Etiketleri (Conditional Tags)

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.

Koşul Etiketleri ve Sayfa Tipleri

Normal şartlarda (örneğin WooCommerce eklentisinin kurulu olmadığı bir durumda) $post->post_type WordPress temelinde tanımlı olan birkaç 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' );
?>
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?

WooCommerce Koşul Etiketleri

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_product()

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.

is_woocommerce()

Eğer şart dahilinde görüntülenen sayfa bir WooCommerce şablonu (template) ise true değerini döndürür.

is_shop()

Ürün arşiv sayfasını (ürün listeleme) tanımlar.

is_product_category()

Herhangi bir ürün kategori sayfası görüntülendiğinde true değerini döner.

is_cart()

Sepet sayfası görüntülendiğinde true değerini verir.

is_checkout()

Ödeme sayfası görüntülendiğinde true değerini alırız.

is_wc_endpoint_url()

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.

is_wc_endpoint_url(‘order-pay’)

Sipariş ödeme sayfası görüntülendiğinde true değerini alırız.

is_wc_endpoint_url(‘order-received’)

Ödeme işlemi tamamlanmasıyla birlikte true değerini alırız.

is_wc_endpoint_url(‘view-order’)

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.
Ceyhun Enki Aksan

Kullanıcı Davranışları Analizi (User Behavior Analysis) ve Kullanıcı Deneyim Tasarımı (UX Design) üzerine çalışmalar yürütmekte, bu süreçte edindiğim teknik ve pratik bilgileri fayda sağlamak motivasyonuyla (afaik / as far as i know) paylaşmaktayım.

HABERDAR OL

Yeni eklenen projeler, eğitimler, içerikler ve yayınlanan videolar e-posta adresine gelsin.