Sözdizimi
5 dk okuma
Bu sayfadaki sonuçlar, değişken motorunun yazdırdığı haliyle gösterilmiştir.
Bloklar
Bir blok {{ ile başlar ve eşleşen }} ile biter. Süslü parantezlerin içindeki boşluklar ve satır sonları yok sayılır; bu yüzden {{glb.name}} ile {{ glb.name }} aynıdır. Parantezlerin dışındaki metin, boşlukları dahil, yazıldığı gibi korunur.
Şablon | Sonuç |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
İçinde {{ bulunmayan metin olduğu gibi döndürülür ve hiçbir maliyeti yoktur.
Dil bilgisi
expression := ternary ( '|' filter )*
ternary := or ( '?' or ':' or )?
or := and ( '||' and )*
and := comparison ( '&&' comparison )*
comparison := primary ( ( '==' | '!=' | '>' | '<' | '>=' | '<=' ) primary )?
primary := literal | '(' expression ')' | path | function-call
path := namespace '.' segment ( '.' segment )*
function := 'fn' '.' name '(' ( expression ( ',' expression )* )? ')'
filter := name ( '(' ( expression ( ',' expression )* )? ')' )?Pipe'lar en düşük önceliğe sahiptir; bu yüzden a ? b : c | upper üçlü ifadenin tüm sonucunu büyük harfe çevirir ve (a | upper) == b için parantez gerekir.
Sabit değerler
Tür | Örnekler | Notlar |
|---|---|---|
Dize |
| İki tırnak türü de olur. Kaçışlar: |
Tamsayı |
|
|
Ondalık |
| Nokta ve ardından rakamlar. Üstel biçim yoktur. |
Boolean |
|
|
Null |
| Hiçbir şey yazdırmaz. |
Negatif sayı sabitleri yoktur. - geçerli bir karakter değildir; bu yüzden {{ fn.abs(-5) }} ve {{ fn.substr('abcdef', -2) }} boş görüntülenir. Sayıyı bunun yerine bir alandan aktarın.
Yollar
namespace.segment.segment. İlk bölüm namespace'tir; kalan segmentlerin anlamı namespace'e bağlıdır.
{{ glb.phone }}
{{ fg.products.price }}
{{ fg.products.details.size }}
{{ pseo.src.cities.name.2 }}- Adlar harf, rakam ve alt çizgiden oluşur ve harf ya da alt çizgiyle başlamalıdır. İlkinden sonraki segmentler düz tamsayı da olabilir (
name.2). - Namespace, filtre ve fonksiyon adlarında büyük/küçük harf ayrımı yoktur:
{{ GLB.name }},{{ FN.UPPER('a') }}ve{{ 'a' | UPPER }}çalışır. Segment olarak verdiğiniz anahtarlar yazıldığı gibi eşleştirilir. - Bilinmeyen bir namespace, bilinmeyen bir anahtar veya boş bir değer hiçbir şey yazdırmaz.
- Bir yol iç içe blok içeremez:
{{ glb.{{ 'name' }} }}boş görüntülenir.
Eski bir anahtarı düzeltmek için bkz. Sorun giderme.
Filtreler
Bir filtre solundaki değeri dönüştürür. İstediğiniz kadarını | ile zincirleyebilirsiniz. Argümanlar parantez içine yazılır; argüman yoksa parantez isteğe bağlıdır.
{{ glb.name | upper }} ACME PLUMBING
{{ glb.name | upper() }} ACME PLUMBING
{{ glb.name | lower | slug }} acme-plumbing
{{ glb.price | number(2) }} 1,234.57
{{ glb.price | number(1, ',', '.') }} 1.234,6
{{ glb.tags | split(',') | join(' / ') }} red / green / blueArgümanlar tam birer ifadedir ({{ 'abc' | truncate(1 > 0 ? 2 : 1) }} şunu yazdırır: ab...). Var olmayan bir filtre değeri değiştirmeden geçirir ({{ 'a' | nosuchfilter }} şunu yazdırır: a). Liste Filtreler ve fonksiyonlar sayfasındadır.
Fonksiyon çağrıları
Fonksiyonlar fn namespace'i üzerinden çağrılır: {{ fn.name(arguments) }}. func, fonk ve function takma adları fn ile aynıdır. Fonksiyonları yalnızca bu dört ad çağırır; wp.title(1) boş görüntülenir. Bilinmeyen bir fonksiyon boş görüntülenir.
{{ fn.concat('a', 'b', 1) }} ab1
{{ fn.if(src.n > 5, 'big', 'small') }} big
{{ fn.coalesce('', null, 'c') }} cOperatörler
Operatör | Anlamı | Sonuç |
|---|---|---|
| Eşit, eşit değil (PHP gevşek karşılaştırması) |
|
| Sıralama karşılaştırması |
|
| İkisi de truthy |
|
| Soldaki değer truthy ise o, değilse sağdaki (boolean değildir) |
|
| Üçlü: koşul, doğruysa değer, değilse değer |
|
| Gruplama |
|
Dilde olmayanlar:
Kullanılamayan | Denemenin sonucu | Bunun yerine |
|---|---|---|
|
|
|
|
| Şu: |
Zincirleme karşılaştırma ( | Yalnızca ilk karşılaştırma okunur |
|
Zincirleme üçlü ifade ( | Yalnızca ilk üçlü ifade okunur |
|
Üçlü ifade dalında filtre ( | Boş görüntülenir | Parantez içine alın veya tüm sonucu filtreleyin |
Döngüler, değişkenler, atamalar | yok | Değeri PHP'de hesaplayın ve şununla okuyun: |
Doğruluk (truthiness) PHP'yi izler: boş dize, 0, "0", null, false ve boş dizi yanlıştır.
Bir sonucun nasıl yazdırıldığı
Değer | Nasıl yazdırılır |
|---|---|
Dize | Dize, kaçışsız |
Sayı | Sayı ( |
|
|
| hiçbir şey |
Liste | Öğeler virgül ve boşlukla birleştirilir ( |
Metin HTML'e kaçışlanmaz. Bir değer <b> içeriyorsa çıktı da içerir. Kaçışlamayı çıktının gittiği yer belirler (alan çıktı fonksiyonları sizin yerinize kaçışlar; bkz. Güvenlik). Bir ifadenin içinde kaçışlamak için escape, esc_attr veya esc_url filtrelerini kullanın.
İç içe bloklar
Bir blok, bir fonksiyonun veya filtrenin argümanlarının içinde yer alabilir. İçteki blok önce, en fazla 5 seviye derinliğe kadar çözülür ve sonucu dıştaki ifadeye veri olarak aktarılır:
{{ fn.upper({{ glb.name }}) }} ACME PLUMBING
{{ fn.concat('Hi ', '{{ glb.name }}') }} Hi Acme Plumbing
{{ fn.concat('a', {{ glb.price }}) }} a1234.5678Kurallar:
- Düz bir sayı olan sonuç (
123,1.5) sayı olarak kalır. Diğer her şey tırnaklı dize olur. - Bir dize sabitinin içinde sonuç o tırnağa göre kaçışlanır; böylece bir değer dizeyi kapatıp kod ekleyemez.
glb.badşunu içeriyorsa:a') }} {{ fn.option('blogname') }} (',{{ fn.upper({{ glb.bad }}) }}o metni büyük harflerle yazdırır ve hiçbir şey çalıştırmaz. - 5 seviyeden derin iç içe kullanım boş görüntülenir.
Sınırlar ve hatalar
Sınır | Değer | Aşılırsa ne olur |
|---|---|---|
Bir bloğun uzunluğu | 1000 karakter | Blok boş görüntülenir |
İç içe blok: | 5 seviye | Boş görüntülenir |
Parantez ve argüman derinliği | 32 | Boş görüntülenir |
| 100 tekrar, 10.000 karakter | Sonuç üst sınırda kesilir |
Şunlardaki ondalıklar: | 10 | 10'a sabitlenir |
Ayrıştırılamayan veya değerlendirilemeyen her şey boş dize olarak görüntülenir:
Hata | Sonuç |
|---|---|
| boş |
| boş (beklenmeyen karakter) |
| boş (filtre adı eksik) |
|
|
|
|
Hata ayıklama kipinde WP_DEBUG açıkken her hata PHP hata günlüğüne yazılır (wp-content/debug.log dosyasına, WP_DEBUG_LOG açıksa) şu biçimde:
[wpmcf] Variable resolution failed — "{{ @ }}" — Unexpected character: @
[wpmcf] Variable resolution failed — "{{ aaaa… }}" — Expression is too long.Ziyaretçilere veya editörlere hiçbir şey gösterilmez. Bkz. Sorun giderme.
Hâlâ takıldınız mı? Destek ile iletişime geçin