Advanced Custom Fields'tan taşıma
13 dk okuma
WPM Fields › Tools › Migrate from ACF, Advanced Custom Fields'ın (ACF) tuttuklarını Mass Custom Fields'a kopyalar:
- alan grupları; alanları, ayarları ve konum kurallarıyla birlikte;
- ACF seçenek sayfaları, yazı türleri ve taksonomileri;
- yazıların (tüm yazı türleri), terimlerin, kullanıcıların, yorumların ve seçenek sayfalarının kaydedilmiş değerleri.
Taşıma işlemi ACF'i yalnızca okur. Bir ACF alan grubunu, bir ACF değerini veya ACF'e ait başka hiçbir satırı değiştirmez ya da silmez; bu yüzden çalıştırıp iki eklentiyi yan yana karşılaştırabilir ve yalnızca memnun kaldığınızda ACF'i devre dışı bırakabilirsiniz. Bir şey ters giderse ACF'i yeniden etkinleştirebilirsiniz ve hiçbir şey kaybolmaz.
Başlamadan önce
- Veritabanını yedekleyin. Taşıma tablolar oluşturur ve değerler yazar. ACF verilerine dokunmaz, ancak yedek almak hiçbir şeye mal olmaz.
- Mümkünse taşıma sırasında ACF'i etkin tutun. Böylece ACF'in kendi fonksiyonları, ACF'in
acf-jsonklasörüne kaydedilen veya PHP'de kaydedilen alan grupları dahil her şeyi okumak için kullanılır. ACF zaten devre dışıysa eklenti ACF verilerini doğrudan veritabanından okur; bu yöntem yalnızca ACF ekranlarında oluşturulan grupları, yazı türlerini, taksonomileri ve seçenek sayfalarını bulur (bunlar ACF'in veritabanında bıraktığı yazılar olarak saklanır). - ACF Pro alanları için bu sitede doğru plan gerekir. Gallery, flexible content ve clone gelişmiş alan türleridir. Bunları içeren bir plan olmadan not included in your plan olarak listelenir ve atlanır. Bkz. Planlar ve lisanslama. Repeater, group, tab ve accordion ücretsizdir.
- ACF Pro devre dışı ama ücretsiz ACF etkinse repeater, flexible content ve clone alanları okunamaz (ACF bunları kendisi yüklemez). Rapor bu durumda None of its sub-fields can be copied. der. Taşıma için ACF Pro'yu etkinleştirin ya da veritabanı okuyucusunun kullanılması için ACF'i tamamen devre dışı bırakın.
Adım adım
- Şunu açın: WPM Fields › Tools ve Migrate from ACF sekmesini seçin. Sayfa hemen bir rapor yükler: ACF'i okuyan ve hiçbir şey yazmayan bir dry run. Sekmeyi her açışınızda yenilenir.
- Hiçbir şey bulunmazsa sayfa No ACF data found der.
- Kart başlığındaki rozet ACF active veya ACF inactive der; mavi bildirim ise Advanced Custom Fields 6.x is active. veya Advanced Custom Fields is not active; its data is read from the database.
- Field Groups listesini okuyun. Her ACF alan grubunun bir onay kutusu (hepsi işaretli), bir başlığı ve şu rozetleri vardır:
Rozet | Anlamı |
|---|---|
Migrated | Önceki bir çalıştırma bu grubu zaten oluşturdu. |
Inactive in ACF | Grup ACF'te kapalı; kapalı olarak oluşturulur. |
N not copied | N alan veya konum kuralı kopyalanamıyor. Details bölümünü açın. |
İkinci satır, yeni grubun alacağı anahtarı, alan sayısını ve kaç nesnenin kaydedilmiş değeri olduğunu gösterir, örneğin Key book_details · 6 fields · 120 posts, 3 users veya No values stored.
- Uyarı rozeti olan satırlarda Details bölümünü açın. Sade bir dille şunları listeler:
- Field "Intro" (message) is not copied: Message fields only show text and store no value.
- Location rule "block == acf/hero" is left out: Blocks are not supported as a location.
- şu tür notlar: a select with several values becomes checkboxes, değiştirilmek zorunda kalan bir anahtar ya da No location rule can be copied, so the group gets no location and its values are not copied. Add location rules and run the migration again.
- Post types, Taxonomies ve Options pages listelerini okuyun:
Rozet | Anlamı |
|---|---|
Will be created | Oluşturulacak. |
Will be created switched off | ACF bunu şu anda kaydediyor; bu yüzden iki kayıt oluşmasın diye kopya kapalı başlar. ACF'i devre dışı bıraktıktan sonra açın. |
Already exists | Burada o adla bir öğe var; olduğu gibi bırakılır. |
Cannot be copied | Mesaj nedenini açıklar (örneğin ayrılmış bir ad). |
- İstemediğiniz alan gruplarının işaretini kaldırın. Yazı türleri, taksonomiler ve seçenek sayfaları her zaman dahil edilir.
- Start migration düğmesine tıklayın. Bir iletişim kutusu Start the ACF migration? diye sorar ve ACF verilerine dokunulmayacağını yineler. Start migration ile onaylayın.
- Tanımlar hemen oluşturulur. Değerler ardından arka planda partiler halinde kopyalanır (bkz. Arka plan görevleri); sayfadan ayrılabilirsiniz. Çalışırken Migration progress adlı ilerleme çubuğu ve N of M objects checked metni birkaç saniyede bir güncellenir.
- İşlem bittiğinde kart Migration finished (veya Migration canceled) ifadesini, Values of N objects were copied (M values). mesajını, oluşturulan veya korunanların listesini ve bazı değerler dönüştürülemediyse nedenleriyle birlikte N values were skipped bilgisini gösterir (ilk 100 listelenir).
İptal, devam ettirme ve yeniden çalıştırma
- Cancel migration geçerli partiden sonra durdurur. Daha önce oluşturulan ve kopyalananlar kalır; durum Migration canceled olur.
- Arka plan kuyruğu durursa (örneğin kuyruk temizlendiyse veya WP-Cron devre dışıysa) yaklaşık beş dakika ilerleme olmadığında Resume düğmesi görünür. Partileri yeniden kuyruğa alır.
- Bir taşıma çalışırken ikincisini başlatamazsınız (A migration is already running.).
- İlk çalıştırmadan sonra düğme Run migration again yazar. İkinci çalıştırmanın ne yaptığı için aşağıya bakın.
İki kez çalıştırma
İkinci çalıştırma güvenlidir ve kullanılması amaçlanmıştır; örneğin editörler ilk çalıştırmadan sonra ACF'te çalışmaya devam ettiyse:
Bölüm | İkinci çalıştırmada |
|---|---|
Zaten taşınmış alan grupları | Korunur (rozet Migrated). Grup ve alanları yeniden oluşturulmaz; bu nedenle oluşturucuda yaptığınız değişiklikler kalır, ACF'te sonradan eklenen alanlar ise eklenmez. |
Yeni ACF grupları | Oluşturulur. |
Yazı türleri, taksonomiler, seçenek sayfaları | Varsa korunur. |
Değerler | ACF'ten yeniden kopyalanır; ACF'te değeri olan her alan için alan grubu tablosundaki değerin üzerine yazılır. Yalnızca bu tarafta değiştirdiğiniz ve ACF'te değeri olmayan alanlardaki değerler kalır. |
Satırlar güncellenir, asla çoğaltılmaz: bir yazı için grup başına bir satır vardır.
Yalnızca bazı grupları kopyalamak için başlamadan önce yalnızca onları işaretleyin. Değişen alan tanımlarını almak için önce taşınmış grubu Field Groups içinde silin (bu işlem tablosunu da kaldırır), ardından yeniden taşıyın.
Tam olarak nelerin kopyalandığı
Adlar ve anahtarlar
ACF | Mass Custom Fields |
|---|---|
Alan grubu başlığı | Alan grubu etiketi. Anahtar, başlığın anahtara çevrilmiş halidir ( |
Alan adı | Alan anahtarı (sütun adı); küçük harf, rakam ve alt çizgiye temizlenir, en fazla 50 karakter. Ayrılmış veya kullanılan bir ada sonek eklenir; rapor her yeniden adlandırmayı listeler. Değerler yeniden adlandırmayı izler. |
Alan etiketi | Alan etiketi. |
ACF alan anahtarı ( | Alanın |
Alan türleri
ACF türü | Dönüştüğü | Notlar |
|---|---|---|
Text, Text Area, Number, Range, Email, URL, Password | aynısı | ACF parolaları okunabilir tuttuğu için alan plain depolama moduna ayarlanır; böylece bunları yazdıran şablonlar çalışmaya devam eder. Diğer depolama modları için Password bölümüne bakın. |
WYSIWYG | WYSIWYG | Araç çubuğu basic veya full, medya yükleme korunur. |
oEmbed | oEmbed | Genişlik ve yükseklik korunur. |
Link | Link | |
Date Picker, Date Time Picker, Time Picker | aynısı | Görüntüleme biçimi korunur. |
Color Picker | Color | Saydamlıklı renk (rgba) desteklenmez ve atlanır. |
Icon Picker | Icon | Yalnızca Dashicons aktarılır; medya ve URL simgeleri atlanır. |
Select | Select | Birden çok değere izin veren bir select, Checkboxes olur. |
Checkbox, Radio, Button Group | aynısı | Seçenekler, dönüş değeri ve yerleşim korunur. |
Saklanmış seçeneği olmayan Select / Checkbox / Radio (seçenekler koddan gelir) | Text (birden çok değer varsa Text Area) | Rapor bunu açıklar. |
True / False | True / false | Açık ve kapalı etiketleri korunur. |
Image, File | Image, File | Yalnızca ek kimliği saklanır. Önizleme boyutu ve izin verilen dosya türleri korunur. |
Gallery | Gallery | Gelişmiş alan türlerini içeren bir plan gerekir. |
Post Object | Post object | Birden çok yazıya izin vermek onu Relationship türüne dönüştürür. |
Page Link | Page link | Arşivlere bağlantılar atlanır; yalnızca yazılar kopyalanır. |
Relationship | Relationship | Yazı türleri ve üst sınır korunur. Boş bir yazı türü listesi, ekler hariç tüm herkese açık yazı türleri anlamına gelir. |
Taxonomy | Taxonomy | Görünüm (onay kutuları, radyo, select, arama olarak çoklu select), Save terms ve Load terms korunur. Yönetim ekranı olmayan taksonomi için bir not eklenir. |
User | User | İzin verilen roller korunur; "multiple" açık değilse tek kullanıcı. |
Google Map | Map | Merkez, yakınlaştırma ve yükseklik korunur; adres, enlem, boylam ve yakınlaştırma değerleri kopyalanır. |
Group | Group | Alt alanlar tek tek dönüştürülür. |
Repeater | Repeater | En az, en çok ve düğme etiketi korunur. Sayfalama kullanılamaz (tüm satırlar gösterilir). Bir repeater'ın yalnızca ilk 200 satırı kopyalanır. |
Flexible Content | Flexible content | Gelişmiş alan türlerini içeren bir plan gerekir. Düzenler düzen olarak aktarılır; tüm düzenlerin alt alanları tek bir liste oluşturur, bu yüzden iki düzenin kullandığı bir ada düzen adı önek olarak eklenir ( |
Clone | Clone | Gelişmiş alan türlerini içeren bir plan gerekir. Yalnızca aynı taşımanın parçası olan tek bir alan grubunun klonu (grubun tamamı veya üst düzey alanlarından bazıları) kopyalanabilir. Birden çok grubun, başka alanların içindeki alanların veya taşınmayan grupların klonları atlanır. |
Tab, Accordion | Tab, Accordion | Yerleşim, endpoint, açık durumu ve "diğer accordion'ları kapat" korunur. Değer saklamazlar. |
Message | kopyalanmaz | Message alanları değer saklamaz. |
Başka bir eklentinin eklediği herhangi bir tür | kopyalanmaz | Bilinmeyen alan türü, büyük olasılıkla başka bir eklenti tarafından eklenmiş. |
Burada group, repeater veya flexible content içinde bulunamayan bir alan türü | kopyalanmaz | Bu alan türü henüz group, repeater veya flexible content içinde kullanılamaz. |
Alt alanları kopyalanamayan bir kapsayıcı | kopyalanmaz | Alt alanlarının hiçbiri kopyalanamaz. |
Alan ayarları
ACF ayarı | Dönüştüğü |
|---|---|
Required, Instructions, Placeholder | aynı seçenekler |
Default value | Alanın varsayılanı; yalnızca türe uyuyorsa (metin benzeri, sayılar, true/false = açık veya seçeneklerden biri). |
Max length | Validation: maximum length |
Min, Max, Step (number, range) | Validation: minimum, maximum, step |
Prepend, Append | Display: prefix, suffix |
Wrapper class, id | Display: wrapper class, id |
Wrapper width (herhangi bir yüzde) | Display width: 25, 33, 50, 66, 75, 100 değerlerinden en yakını |
Conditional logic | Tek bir AND grubuysa veya tek kuralların OR'uysa koşullu mantık; |
Hide on screen | kopyalanmaz |
Alan grubu ayarları
ACF | Dönüştüğü |
|---|---|
Style (Standard / Seamless) | Style |
Position (After title, Normal, Side) | Position (High, Normal, Side) |
Label placement, Instruction placement | aynı seçenekler |
Order (menu order) | Order |
Active | Active (etkin olmayan gruplar etkin olmayan olarak oluşturulur) |
Show in REST API, Show in GraphQL | REST, GraphQL |
Description | Description |
Konum kuralları
ACF konum kuralları ve eklentinin kuralları aynı mantıktadır: "bu kümelerden herhangi biri, her küme tüm kurallarını gerektirir". Karşılığı olmayan bir kural kümenin tamamını kaldırır; böylece bir grup hiçbir zaman ACF'tekinden daha fazla yerde gösterilmez. Rapor, dışarıda bırakılan her kuralı listeler. Hiç küme kalmazsa grup konumsuz oluşturulur ve siz kural ekleyene kadar değerleri kopyalanmaz.
ACF kuralı | Dönüştüğü |
|---|---|
Post Type, Post Template, Post Status, Post Format, Post, Page Template, Page Parent, Page, Current User Role | aynı kural |
Post Category, Post Taxonomy ( | bu sitedeki terim id değeriyle aynı kural. Terim burada var olmalıdır, aksi halde kural dışarıda bırakılır. |
Page Type | aynı kural; kullanılamayan Parent page hariç |
User Form (all, edit, add) | profile / edit / add, alternatifler olarak. Register desteklenmez. |
User Role (bir rol) | User role. All herhangi bir kullanıcı formu olur. |
Taxonomy (bir taksonomi) | Taxonomy screen. All yönetim ekranı olan her taksonomi olur. |
Attachment | All yalnızca (ve aynı anlama geldiği yerde bir mime türü) |
Comment | All yalnızca |
Menu Item (belirli bir menü kimliği) | Nav menu |
Options Page | Options page, aynı slug |
Current User (logged in, viewing back-end) | kural yok: düzenleme ekranları her zaman oturum açmış bir kullanıcıyla yönetim panelindedir |
Widget, Block, Menu (ayarlar ekranı), Current User (diğer her şey), diğer eklentilerin kuralları | kopyalanmaz |
Şunlar dışındaki işleçler: | kopyalanmaz |
Bir gruptan en fazla 20 küme korunur.
Yazı türleri, taksonomiler ve seçenek sayfaları
- Yazı türleri ve taksonomiler: her iki eklentide de bulunan tüm etiketler, görünürlük, menü, yeniden yazma, arşiv, yetki, REST ve "supports" ayarları. Simgeler: yalnızca Dashicons aktarılır. Adı ayrılmış veya geçersiz olan bir yazı türü Cannot be copied olarak listelenir.
- Seçenek sayfaları: başlık, menü başlığı, üst öğe, yetki, simge (Dashicons), konum, açıklama, güncelle düğmesi ve güncellendi mesajı. PHP'de
acf_add_options_page()ile kaydedilen sayfalar ACF etkinse dahil edilir. Değerleroptions_{field name}seçenek adlarından (veya sayfanın özelpost_iddeğerinin önekinden) okunur. Sayısal birpost_iddesteklenmez. - ACF etkinken kendi yazı türleri ve taksonomileri şu anda kayıtlı olduğundan kopyalar kapalı oluşturulur (Will be created switched off) ve ACF'i devre dışı bıraktıktan sonra açtığınızda çalışmaya devam eder.
- ACF etkin değilken birbirine başvuran bir yazı türü ve taksonomi (olağan durum), bağlantıları bozulmadan tek çalıştırmada birlikte oluşturulur: denetimler aynı çalıştırmada oluşturulan adları bilir ve taksonomi kendinden önce oluşturulan yazı türlerini korur.
Değerler
Değerler, ACF'in yazdığı standart yerlerden okunur ve yeni tablolara kopyalanır:
Nesne | ACF'in tuttuğu yer | Gittiği yer |
|---|---|---|
Yazılar (revizyonlar hariç tüm yazı türleri; sayfalar ve ekler dahil) |
| grubun tablosu, posts satır türü |
Terimler |
| terms satır türü |
Kullanıcılar |
| users satır türü |
Yorumlar |
| comments satır türü |
Seçenek sayfaları |
| options satır türü |
Bir nesnenin bir gruba ait değerleri olduğu, ACF'in kendi referansı (alan anahtarına işaret eden _field_name) mevcut olduğunda kabul edilir. Diğer meta satırlarına asla dokunulmaz. Her değer dönüştürülür ve ardından sanki elle yazılmış gibi yeni alan türü tarafından denetlenir; bu yüzden alanın kabul etmediği bir değer atlanır ve listelenir (The value could not be converted and was skipped. veya The value is longer than the column allows and was skipped.).
Bilmeye değer dönüşümler:
ACF türü | Dönüşüm |
|---|---|
Date Picker |
|
Checkbox, multi Select | Saklanan liste; seçenekler arasında olmayan değerler atılır |
Radio, Button Group | Değerin kendisi |
Post Object, Relationship, Taxonomy, User, Gallery | Kimlikler (Page Link içindeki URL yazı kimliği olur) |
Image, File | Ek kimliği |
Repeater | Satırlar sırayla, en fazla 200 |
Flexible content | Düzenleriyle birlikte satırlar |
Group, Clone | Alanın altındaki alt değerler |
Kopyalanan değerler yalnızca yeni alan grubu tablolarına gider. wp_postmeta tablosuna yazılmaz.
Her iki eklentiyi birlikte kullanma
Taşımadan sonra ACF'i etkin tutabilirsiniz. İki eklenti değerlerin ayrı kopyalarını tutar:
- Bir editörün ACF kutularında kaydettiği her şey hâlâ ACF'in satırlarına (
wp_postmeta) gider. Mass Custom Fields'ın yazma köprüsü, ACF'in yönettiği anahtarlara bilerek dokunmaz; böylece ACF çalışmaya devam eder. ACF'te yapılan düzenlemeler, taşımayı yeniden çalıştırana kadar yeni tabloda görünmez. - Yeni kutularda kaydedilen her şey yeni tablolara gider.
- Bir grup aynı düzenleme ekranında her iki eklentide de görünüyorsa editörler iki kutu görür. Editörlerin yeniden çalışmasına izin vermeden önce alanların hangi eklentiye ait olacağına karar verin.
ACF'i devre dışı bırakmadan önce
Bu listeyi uygulayın:
Her şey eşleştiğinde ACF'i devre dışı bırakın. Verileri veritabanında kalır, böylece istediğiniz zaman geri dönebilirsiniz.
WP-CLI
wp wpmcf acf report
wp wpmcf acf migrate --dry-run
wp wpmcf acf migrate --groups=group_5f3a1b2c4d5e6CLI, kopyalamanın tamamını ön planda çalıştırır. Bkz. WP-CLI.
Bilinen sınırlar
- Taşınmaz ve raporda listelenir: message alanları, diğer eklentilerin alan türleri, saklanan seçenekler arasında olmayan seçenek değerleri, 200'ü aşan repeater satırları, rgba renkler, medya ve URL simgeleri, Page Link içindeki arşiv URL'leri, sayısal
post_iddeğerine sahip seçenek sayfaları, WPML dil son eki içeren seçenek adları ile widget veya blok değerleri. - Flexible content ve clone alanları (bunları içeren planlarda) yukarıdaki sınırlarla taşınır.
- Yazı türleri ve taksonomiler her zaman seçtiğiniz gruplarla birlikte taşınır: bunları dışarıda bırakamazsınız.
- Taşımayı çalıştırmak alan grubu tanımlarını güncellemez (bkz. İki kez çalıştırma).
Sorun giderme
ACF kurulu olduğu halde "No ACF data found". ACF tanımlarını yazı olarak saklar. Yalnızca acf-json klasöründe veya PHP'de tanımlanan gruplar ancak ACF etkinken görünür. ACF'i etkinleştirin ve sekmeyi yeniden yükleyin.
Bir alan grubu something_2 anahtarını aldı. İlk anahtara sahip bir grup zaten var. Rapor bunu başlamadan önce belirtir.
Bir grup taşındı ama değerler gelmedi. Grubun Details bölümünü açın. No location rule can be copied... mesajı grubun konumu olmadığı, dolayısıyla değerlerin konacağı bir tablo satırı olmadığı anlamına gelir. Field Groups içinde konum kuralları ekleyin, ardından Run migration again düğmesine tıklayın.
Taşıma "running" durumunda kalıyor. Kuyruk işlenmiyor. Tools › Scheduled Actions (WordPress) ekranını açıp wpmcf/acf/migrate eylemini çalıştırın, WP-Cron'un devre dışı olmadığından emin olun veya Resume düğmesine tıklayın. Çalışan bir cron'u olmayan sunucularda wp wpmcf acf migrate komutunu kullanın.
ACF'te her şey çalışıyor ama bir yazıda yeni kutu boş. Yazının o alan için ACF referans satırı (_field_name) yoktu; bu, ACF dışında update_post_meta() ile yazılan değerlerde olur. Yazıyı ACF'te yeniden kaydedin veya değeri wpmcf_update_field() ile kopyalayın.
Bazı değerler "could not be converted" nedeniyle atlandı. Yeni alan türü, ACF'in sakladığı değeri reddeder; örneğin artık var olmayan bir seçenek, silinmiş bir ek ya da çöpe atılmış bir yazının kimliği. Verileri ACF'te düzeltin ve taşımayı yeniden çalıştırın.
Hâlâ takıldınız mı? Destek ile iletişime geçin