Repeater
4 dk okuma
Bir Repeater, editörlerin ihtiyaç duydukları kadar satır eklemesine olanak tanır; her satır aynı alt alanlardan oluşur (soru ve cevap, ad ve fotoğraf, özellik ve fiyat). Tüm satırlar tek bir JSON listesi olarak saklanır.
Tür kimliği |
|
Oluşturucu kategorisi | Layout |
Sütun |
|
Döndürür | satır dizilerinin bir listesi, satır yoksa |
Yazdırır | satırların sıralı listesi |
Repeater alanları Group alanları gibi oluşturulur: alanı ekleyin, ardından satırın her sütunu için + Add sub-field düğmesini kullanın. İçine konabilecekler (Group, Repeater, Password ve Pro türleri olmaz) ve alan anahtarları için de aynı kurallar geçerlidir.
Çok sayıda kayıt için ya da değerlerine göre filtreleme ve sıralama yapmak istediğinizde normal bir alan grubu veya Pro veri tablosu kullanın; repeater, birlikte gösterilen birkaç düzine satır için tasarlanmıştır.
Tür ayarları
Ayar | Varsayılan | Etki |
|---|---|---|
Minimum rows | 0 | Editörler bu sayının altına inecek şekilde satır silemez (silme düğmesi devre dışı kalır). Onlar için boş satır eklemez ve sunucu tarafında uygulanmaz. Şu değeri aşamaz: Maximum rows. |
Maximum rows | 0 | 0, yerleşik üst sınır olan 200 satıra kadar sınır yok anlamına gelir. Maksimuma ulaşıldığında Add row ve Duplicate row devre dışı kalır; bir betikle gönderilen fazla satırlar kaydedilirken atılır. |
Button label | Add row | Satır ekleyen düğmenin metni. Boş bırakılırsa "Add row" kullanılır. |
Düzenleme ekranı
- Bir çubuk satır sayısını ("3 rows" ya da maksimum varsa "2 / 3 rows") ve Collapse all düğmesini gösterir.
- Her satırın üstünde bir başlık bulunur: sürükleme tutamacı (Drag to reorder), satır numarası (satırı daraltmak veya genişletmek için tıklayın) ve Duplicate row, Move row up, Move row down ile Remove row düğmeleri. Daraltılmış satırlar kısa bir özet gösterir.
- Satır yokken şu mesaj görünür: "No rows yet. Use “Add row” to add the first one." (kendi düğme etiketinizle).
- Satır eklemek için ekleme düğmesine (varsayılan Add row) basın.
Satırlar sürükleme tutamacı veya yukarı ve aşağı düğmeleriyle yeniden sıralanır. Ön yüz formlarında (Pro) satırlarda yalnızca ok ve silme düğmeleri bulunur.
Neler kaydedilir
- Satırlar gösterilen sırayla kaydedilir ve 0'dan başlayarak yeniden numaralandırılır.
- Her alt alan kendi türüne göre temizlenir.
- Boş satırlar atılır. Bir satırın tüm alt değerleri boşsa satır boş sayılır; kapalı durumdaki bir True / false alt alanı tek başına satırın tutulmasını sağlamaz.
- Satır sayısı Maximum rows değerini aşarsa fazla satırlar atılır (ilk satırlar korunur).
- Zorunlu bir Repeater, doldurulmuş alt alanı olan en az bir satır gerektirir; zorunlu alt alanlar her satırda denetlenir ve uyarı ilk eksik olanı belirtir (
Rows › Name). - Tüm satırları silip kaydetmek alanı temizler.
- Form sunucunun kabul ettiğinden fazla değer gönderecekse (
max_input_vars), kaydetme tarayıcıda engellenir ("Saving is blocked: this screen would send more values than the server accepts…"); yine de sunucuya ulaşırsa o kayıttaki hiçbir özel alan yazılmaz ve bir hata bildirimi "Custom fields were not saved: the form sent more values than the server accepts…" der. Satırları azaltın veya barındırma sağlayıcınızdan sınırı yükseltmesini isteyin.
Kod üzerinden bir satır listesi verin. Bir satırda eksik olan alt alanlar yalnızca bulunmaz:
wpmcf_update_field( 'faq', 'items', [
[ 'question' => 'What is it?', 'answer' => 'A plugin.' ],
[ 'question' => 'Is it free?' ],
], $post_id );Group'ta olduğu gibi, yazma işlemi tüm listeyi değiştirir.
Şablonda kullanım
$rows = wpmcf_get_field( 'faq', 'items' );
// [
// [ 'question' => 'What is it?', 'answer' => 'A plugin.', 'featured' => 1 ],
// [ 'question' => 'Is it free?' ],
// ]
if ( $rows ) {
foreach ( $rows as $row ) {
printf(
'<details><summary>%s</summary>%s</details>',
esc_html( $row['question'] ?? '' ),
wp_kses_post( $row['answer'] ?? '' )
);
}
}Satırlar kodda 0'dan başlayarak numaralandırılır. Alt değerler saklanan değerlerdir (True / false alt alanı 1/0, Image bir ek kimliği, Link bir dizidir). Bir satırdaki anahtarların sırası garanti edilmez ve eksik anahtarlar olabilir; bu yüzden ?? kullanın.
Tek bir satırı veya hücreyi path ile okuyun:
wpmcf_get_field( 'faq', 'items', null, [ 'path' => '0' ] ); // the first row (array)
wpmcf_get_field( 'faq', 'items', null, [ 'path' => '1.question' ] ); // "Is it free?"Yazdırma
wpmcf_the_field() ve kısa kod, her alt değeri kendi türüne göre biçimlendirerek sıralı bir liste yazdırır (select için etiketler, ilişkiler için bağlantılı başlıklar, görseller için bir <img>). Boş alt değerler dışarıda bırakılır.
[wpmcf_field group="faq" field="items" wrap="false"]<ol class="wpmcf-repeater">
<li class="wpmcf-repeater__row">
<span class="wpmcf-repeater__value" data-field="question">What is it?</span>
<span class="wpmcf-repeater__value" data-field="answer">A plugin.</span>
</li>
<li class="wpmcf-repeater__row">
<span class="wpmcf-repeater__value" data-field="question">Is it free?</span>
</li>
</ol>- Bir satırı yazdırın:
path="1". Bir hücreyi yazdırın:path="1.question"(alt alanın türüne göre ve alt alanın kendi ön eki, son eki ve sarmalayıcısıyla biçimlendirilir). - Geliştiriciler tüm listeyi
wpmcf/field/repeater_htmlfiltresiyle değiştirebilir (bağımsız değişkenler: HTML, satırlar, alan tanımı). - Varsayılan olarak çıktı
<span class="wpmcf-field-value">içinde yer alır; bir span içinde liste olmasını önlemek içinwrap="false"kullanın.
Özel işaretleme için yukarıda gösterildiği gibi diziyi döngüyle okuyun. Repeater için sayfa oluşturucu widget'ları (Elementor) Pro'nun parçasıdır; bkz. Pro oluşturucu widget'ları.
Sınırlar
- Repeater başına en fazla 200 satır.
- Bir Repeater, Group veya başka bir Repeater içeremez ve bir Group içinde yer alamaz.
- Tüm liste tek bir değerdir: yazıları bir satırın içindekine göre filtrelemek dizin kullanamaz ve ona göre sıralamak mümkün değildir; bu yüzden sorguladığınız değerler için üst düzey alanları kullanın.
- Bir Repeater, Programatik SEO veri kaynağı sütunu olamaz.
Sorun giderme
- Boş satırım kaydettikten sonra kayboldu. Doldurulmuş alt alanı olmayan satırlar atılır.
- Son satırı silemiyorum. Minimum rows ayarlanmış.
- 3. satırdan sonrakiler kayboluyor. Maximum rows değeri 3.
- "Custom fields were not saved: the form sent more values than the server accepts." Sunucunun
max_input_varssınırı aşıldı; satırları veya alt alanları azaltın ya da PHP'demax_input_varsdeğerini yükseltin.
Hâlâ takıldınız mı? Destek ile iletişime geçin