WordPress için çoğu özel alan eklentisi bir değeri çıktı olarak vermenin iki yolunu sunar: bir shortcode ya da şablon dosyasında bir PHP fonksiyon çağrısı. İkisi de işe yarar, ancak içeriği sitede yeniden kullanmaya başladığınızda sürekli karşınıza çıkan bir duruma pek uygun değildir: bir sayfa oluşturucuda ya da geliştirici olmayan birinin düzenlediği bir şablonda, üzerine filtre uygulanması gereken bir değer; örneğin büyük harfe çevrilmesi, sayı olarak biçimlendirilmesi ya da boşsa varsayılan bir değerle değiştirilmesi gereken bir değer.
Değişkenler tam olarak bu boşluk için geliştirilmiş küçük bir ifade dilidir. Sözdizimi {{ namespace.path | filter }} biçimindedir ve bilinçli olarak sınırlıdır: içinde hiçbir PHP çalışmaz, yalnızca sabit bir ad alanı, filtre ve fonksiyon kümesi kullanılabilir. Motor ücretsiz eklentinin bir parçasıdır.
Ad alanları
Her değişken, değerin nereden geldiğini belirten bir ad alanıyla başlar:
glb— Global Data; bir kez tanımlayıp her yerde yeniden kullandığınız site genelindeki değerler: telefon numarası, adres, çalışma saatleri, sosyal bağlantılar.fg— geçerli nesne için bir alan grubunun alan değeri:fg.products.price, geçerli yazıdakiproductsgrubununpricealanını okur.wp— geçerli yazı, terim ve oturum açmış kullanıcı; örneğinwp.post_title.sys— tarih, saat ve site bilgileri; örneğinsys.yearveyasys.site_name.woo— WooCommerce'in etkin olduğu sitelerde geçerli WooCommerce ürünü.src— kendi kodunuzunwpmcf_make_context()ile ilettiği değerler.pseo— oluşturulan bir sayfanın arkasındaki veri satırı ve sayfa. Ücretli planlarda Programatik SEO şablonlarındapseo.src.<source>.<column>biçiminde kullanılabilir.
Ayrıca fn vardır; bu bir veri değil, fn.concat() gibi yerleşik bir fonksiyonu çağırır.
{{ glb.phone }}
{{ fg.products.price | number(2) }}
{{ wp.post_title | upper }}Filtreler
Filtre, bir değeri okunduktan sonra boru karakteriyle dönüştürür: {{ value | filter }}; birden fazla filtreyi zincirleyebilirsiniz. Mevcut filtreler gerçek şablonlarda karşılaşılan dönüşümleri kapsar; bunlar arasında upper, lower, slug, trim, truncate, replace, number, round, date, date_format, default, join, length, json ve escape bulunur. Bilinmeyen bir filtre değeri olduğu gibi geçirir; dolayısıyla yazım hatası ham değerin yazdırılmasına yol açar.
default özellikle vurgulanmaya değer, çünkü sessizce hiçbir şey göstermeyen bir şablonla makul bir şey gösteren şablon arasındaki farkı yaratır: {{ fg.products.discount | default('No discount') }}, alan boş olduğunda boş bırakmak yerine verilen metne döner. Her filtre ve fonksiyon, argümanları ve sonuçlarıyla birlikte filtreler ve fonksiyonlar sayfasında listelenir.
Koşullu ifadeler
Dilde karşılaştırmalar, &&, || ve basit ya-da durumları için bir üçlü (ternary) ifade bulunur:
{{ fg.products.stock > 0 ? 'In stock' : 'Sold out' }}Bu, yaygın durumu kapsar: bir karşılaştırmaya göre iki etiketten birini seçmek; tam bir şablon diline gerek kalmaz. Döngü, atama ve aritmetik operatör yoktur; yani bilinçli olarak genel amaçlı bir betik aracı değildir. Bir şeyi hesaplamanız gerektiğinde bunu PHP'de hesaplayıp src ile iletin. Değerlendirilemeyen bir blok boş bir dize olarak çıktılanır, böylece sayfa oluşturulmaya devam eder.
Burada neden PHP çalışmaz
Değişkenlerin “sadece bir PHP kod parçası yazın” yerine ayrı ve kısıtlı bir dil olarak var olmasının nedeni güvenliktir. Bir sayfa oluşturucu ya da yapay zekâ ile oluşturulmuş bir şablon, özellikle içerik editörleri, müşteriler veya oluşturulan sayfa şablonları devreye girdiğinde, rastgele kod çalıştırılabilmesini istemeyeceğiniz bir yerdir. Değişkenler yalnızca açık bir izin listesindeki filtre ve fonksiyonları çağırabilir; WordPress seçeneğini okuyan fn.option() bile blogname gibi kısa bir seçenek adı listesiyle sınırlıdır ve wp_options içindeki her şeyi okuyamaz.
Bilmeye değer iki koruma daha var. Parola alanları ve parola değişkenleri her zaman boş çıktılanır. Ayrıca depolanan bir değer, ifadeleri yalnızca yazarı güvenilirse çalıştırır: bir yazı için bu, yazarın filtrelenmemiş HTML kullanabilmesi anlamına gelir; böylece bir katkıcı {{ }} yazarak bir yazının başka bir alanı yazdırmasını sağlayamaz. Güvenlik sayfası her kuralı ve onu ayarlayan filtreyi listeler.
Tüm kullanım yerlerinin listesi değişkenlerin çalıştığı yerler sayfasındadır.
Değişkenlerin ötesinde çıktı
Değişkenler, Mass Custom Fields içinden bir değer almanın üç yolundan biridir. Diğerleri shortcode'lardır — [wpmcf_field group="product" field="price"] ve [wpmcf_global key="phone"], shortcode çalıştıran her sayfa oluşturucuda kullanılabilir — ve tema ile eklenti kodu için bir PHP API'sidir: wpmcf_get_field(), wpmcf_the_field(), wpmcf_has_field() ve Global Data için wpmcf_get_global(). Hangisini seçeceğiniz nerede çalıştığınıza bağlıdır: bir oluşturucu ya da oluşturulan sayfa şablonunun içinde değişkenler, yalnızca shortcode kabul eden bir oluşturucuda shortcode'lar, doğrudan tema kodu yazarken PHP API'si. Shortcode'lar ve ad alanları referansı sayfalarına bakın.
Özet
Güvenli bir ifade dili, bilerek PHP'den daha dar bir araçtır. {{ namespace.path | filter }}, bir değeri okumayı, biçimlendirmeyi, varsayılan bir değer vermeyi ve basit bir ya-da seçimini kapsar; bu, bir şablonun gerçekte ihtiyaç duyduğu şeylerin büyük çoğunluğudur. Üstelik başkalarının ya da bir yapay zekâ sağlayıcısının düzenleyebileceği içeriklerde rastgele kod çalıştırmanın kapısını açmaz.



