Alan değerlerini taşıma (WordPress dışa aktarma dosyaları) ve yazıları çoğaltma
4 dk okuma
Alan değerleri alan grubu tablolarında tutulur, wp_postmeta içinde değil; bu yüzden normal bir WordPress dışa aktarma dosyası onları dışarıda bırakırdı. Mass Custom Fields bunları dışa aktarmaya ekler ve içe aktarırken geri okur. Başka bir eklenti bir yazıyı çoğalttığında da bunları kopyalar.
Hiçbir şeyi açmanız gerekmez: ikisi de eklenti etkinleştirilir etkinleştirilmez çalışır.
Yazıları değerleriyle birlikte dışa aktarma (WXR)
- Önce kaynak sitede Tools › Export ekranını açın (WPM Fields › Tools değil, WordPress'in kendi ekranı).
- Şunlardan birini seçin: All content, Posts, Pages veya özel bir yazı türü; ardından Download Export File düğmesine tıklayın.
- Dosyada, kayıtlı alan değeri bulunan her yazı bir ek özel alan taşır:
<wp:postmeta>
<wp:meta_key><![CDATA[_wpmcf_fields]]></wp:meta_key>
<wp:meta_value><![CDATA[{"book_details":{"isbn":"978-3-16-148410-0","pages":320}}]]></wp:meta_value>
</wp:postmeta>Değer JSON biçimindedir: önce alan grubu anahtarı, ardından her alan anahtarı ve değeri. Değeri olmayan yazılara ek giriş eklenmez.
Bilmeniz gerekenler:
- Dışa aktarılan değerler yazılar, sayfalar ve özel yazı türlerine aittir. Terim, kullanıcı, yorum ve seçenek sayfalarının değerleri WXR dosyasında yer almaz; bunları kendi betiğinizle kopyalayın (
wpmcf_get_field()vewpmcf_update_field()). - Password alanları saklandıkları haliyle dışa aktarılır. Dışa aktarma dosyasını hassas veri olarak ele alın.
- WordPress'in kendi dışa aktarıcısını kullanmadan WXR dosyası üreten eklentiler (örneğin bazı komut satırı dışa aktarıcıları) değerleri içermeyebilir. Kontrol etmek için dosyayı açıp
_wpmcf_fieldsifadesini aratın. - Dosya normal bir WXR dosyasıdır. Mass Custom Fields olmayan bir siteye aktarıldığında
_wpmcf_fieldsyalnızca özel alan olarak saklanır.
Yazıları değerleriyle birlikte içe aktarma
Şu adımları bu sırayla hedef sitede uygulayın:
- Mass Custom Fields'i kurun ve önce tanımları içe aktarın: alan grupları aynı anahtarlarla mevcut olmalıdır. Dışa ve içe aktarma (JSON) veya Local JSON kullanın. Yazıların ait olduğu yazı türleri ve taksonomiler de bulunmalıdır.
- Açın: Tools › Import, WordPress seçeneğini seçin (istenirse WordPress Importer'ı kurun), dosyayı yükleyin ve her zamanki gibi çalıştırın.
wp importve özel alanları WordPress'in kendi işlevleriyle kaydeden diğer içe aktarıcılar da aynı şekilde çalışır. - İçe aktarılan birkaç yazıyı açın ve alanları kontrol edin.
Bir içe aktarıcı çalışırken her _wpmcf_fields girişi, WordPress onu özel alan olarak saklamadan önce yakalanır:
- değerler, alan türlerine göre, editörde yazılan değerlerle aynı şekilde denetlenir (düz metinden etiketler temizlenir, sayılar sayı olmalıdır, seçenekler mevcut olmalıdır vb.);
- temizlenen değerler, yeni yazının alan grubu tablolarındaki satırına yazılır;
- hiçbir şey,
wp_postmetaiçinde saklanmaz; böylece postmeta tablonuz temiz kalır.
İçe aktarıcının sessizce atladıkları: hedefte bulunmayan gruplar, grupta bulunmayan alanlar, alan türünün kabul etmediği değerler ve türü hedefin planında bulunmayan alanlar.
İçe aktarma sırasında grupların konum kuralları denetlenmez: sayfalara yerleştirilmiş bir grubun değeri, içe aktarılan yazı normal bir yazı olsa bile yazılır. İçe aktarma dışında giriş yalnızca geçerli kullanıcı yazıyı düzenleyebiliyorsa ve grup o yazıda konumlandırılmışsa uygulanır.
Bilinen sınır: ID'ler eşlenmez
Başka içeriklere işaret eden değerler (relationship, post object, page link, taxonomy, user, image, file, gallery) kaynak sitedeki ID'leriyle yazılır. WordPress içe aktarılan yazılara ve medyaya genellikle yeni ID'ler verir; bu yüzden:
- hedefte bulunmayan bir ID alan türü tarafından atılır;
- tesadüfen mevcut olan bir ID yanlış öğeyi gösterebilir.
İçe aktardıktan sonra bu alanları yeniden seçin veya wpmcf_update_field() kullanan kısa bir betikle düzeltin.
Bir yazıyı çoğaltma ve değerlerini koruma
Çoğaltma eklentileri yalnızca özel alanları (wp_postmeta) kopyalar; bu nedenle yardım olmadan kopyanın alanları boş olurdu.
Yoast Duplicate Post
Yoast'ın Duplicate Post eklentisi etkin olduğunda herhangi bir yapılandırma gerekmez. Şunları kullandığınızda alan satırları kopyayla birlikte gelir:
- Clone ve New Draft;
- Rewrite & Republish: yeniden yazılan kopyadaki değişiklikler, alan değerleri dahil, özgün yazıya geri birleştirilir.
Bu, integration.duplicate-post entegrasyonu olarak otomatik açılır. Sürekli başarısız olursa kendini kapatır ve nedeni Settings › Health altında listelenir (bkz. Sağlık ve sorun giderme).
Diğer çoğaltıcılar ve kendi kodunuz
Bir yazının kopyasını oluşturan herhangi bir kod, yeni yazı oluşturulduktan sonra değerleri tek bir action ile kopyalayabilir:
// $source and $copy are post ids.
do_action( 'wpmcf/fields/copy_object', $source, $copy );Davranış:
- Kaynak yazı için satırı olan tüm alan grupları, grup başına bir veritabanı sorgusuyla kopyalanır; alanların ek sütunları da (harita enlemi ve boylamı gibi) dahildir.
- Kopya için bu sütunlarda önceden saklanmış bir değerin üzerine yazılır.
- Aynı kaynak-kopya çifti istek başına bir kez kopyalanır; aynı istekteki ikinci çağrı hiçbir şey yapmaz.
- Başarısız olan bir grup günlüğe kaydedilir ve diğer gruplar yine de kopyalanır.
Bir yazıyı çoğaltmak özgün yazıyı asla etkilemez.
Sorun giderme
İçe aktarılan yazıların alanları boş. Sırayla kontrol edin: alan grupları hedefte aynı anahtarlarla mevcut mu; grupların bir konumu var mı (konumu olmayan grubun tablo satırı olmaz); dışa aktarma dosyası _wpmcf_fields içeriyor mu; bu grupların alan türleri hedefin planında kullanılabilir mi.
Relationship alanlarım yanlış yazıları gösteriyor. Yukarıdaki Bilinen sınır: ID'ler eşlenmez bölümüne bakın.
Çoğaltılan yazının alanları boş. Çoğaltan eklenti Yoast Duplicate Post değil ve action'ı çağırmıyor. Eklentinin yazarından wpmcf/fields/copy_object çağrısını eklemesini isteyin veya kendi kodunuzu eklentinin "yazı çoğaltıldı" action'ına bağlayıp orada çağırın.
Hâlâ takıldınız mı? Destek ile iletişime geçin