Geçerli çocuk olarak yapılandırdığınız şey ne olursa olsun, WordPress p etiketlerini ve satır sonlarını çok benzersiz bir şekilde işler. Muhtemelen, daha önce yapmadıysanız, metin düzenleyiciden görsel düzenleyiciye geçerken ve geri döndüğünüzde, <p>
etiketlerinizin ön uçta olanlara benzer şekilde soyulduğunu fark edeceksiniz . Bunun olmasını engellemenin bir yolu, <p>
etiketlere özel bir sınıf vermektir .
<p class="text">This p tag won't get removed"</p>
.
İken ↑ Bu ↑ elimden alma adresinin p etiketi tutacak, hala mucked alır önyüz üzerinde İşaretlemenize olarak sorunu çözmek olmayacaktır. Sen olabilir DISABLE wpautop. Bunu yaparsanız ve geçerli çocuklarda p varsa, bu SAYINIZI DÜZELTECEKTİR .
SEÇENEK 1: Autop'u Devre Dışı Bırak ve Geçerli Çocukları Ayarla
remove_filter( 'the_content', 'wpautop' );
add_filter('tiny_mce_before_init', 'modify_valid_children', 99);
function modify_valid_children($settings){
$settings['valid_children']="+a[div|p|ul|ol|li|h1|span|h2|h3|h4|h5|h5|h6]";
return $settings;
}
HTML düzenleyiciden TinyMCE'ye geri döndüğünüzde HTML'nizin yok olacağı konusunda sizi uyarmalıyım . Geçici çözüm, aşağıdaki seçenek 2'deki gibi bazı yazı türleri için TinyMCE'yi tamamen devre dışı bırakmaktır .
SEÇENEK 2: Otomatik P, TinyMCE'yi Devre Dışı Bırak ve Geçerli Çocukları Ayarla
remove_filter( 'the_content', 'wpautop' );
add_filter('tiny_mce_before_init', 'modify_valid_children', 99);
function modify_valid_children($settings){
$settings['valid_children']="+a[div|p|ul|ol|li|h1|span|h2|h3|h4|h5|h5|h6]";
return $settings;
}
add_filter('user_can_richedit', 'disable_wyswyg_to_preserve_my_markup');
function disable_wyswyg_to_preserve_my_markup( $default ){
if( get_post_type() === 'post') return false;
return $default;
}
Çoğu insan için ↑ bu ↑ bir seçenek değildir.
Peki başka hangi seçenekler var? İşe yaradığını fark ettiğim bir geçici çözüm , bir sınıfla yayılma etiketi kullanmak ve HTML etiketleriniz arasında boşluk olmadığından emin olmaktır . Bunu yaparsanız yukarıdaki seçeneklerden birini kullanabilir ve TinyMCE'yi hep birlikte devre dışı bırakmak zorunda kalmazsınız. Aralığı doğru görüntülemek için stil sayfanıza biraz CSS eklemeniz gerektiğini unutmayın.
SEÇENEK 3: Seçenek 1 + Stil Aralığı Etiketleri
HTML
<a href="#"><img src="https://placehold.it/300x200?text=Don%27t+P+On+Me" alt="" /><span class="noautop">Some amazing descriptive text</span></a>
Stil Sayfasında CSS
.noautop {
display: block;
}
4. Seçenek: Yerleşik medya yükleyici kısa kodunu kullanma
Başlangıçta bunu unuttum, ancak [altyazı] kısa kodu şöyle görünecektir:
[caption id="attachment_167" align="alignnone" width="169"]
<img class="size-medium wp-image-167" src="http://example.com/example.png" alt="" width="169" height="300" />
awesome caption
[/caption]
Çıktı şöyle görünecektir:
<figure id="attachment_167" style="width: 169px" class="wp-caption alignnone">
<img class="size-medium wp-image-167" src="http://example.com/example.png" alt="" width="169" height="300" />
<figcaption class="wp-caption-text">Some amazing descriptive text</figcaption>
</figure>
Şekil etiketleri istemiyorsanız , bunu yapmanızı sağlayan özel içerik kısa kodu gibi bir eklenti kullanabilirsiniz :
[raw] <p>this content will not get filtered by wordpress</p> [/raw]
Editör neden istediğim gibi çalışmıyor?
Son birkaç yıldır bunun işe yaramasını sağlamak için sayısız saat geçirdim. Bazen mükemmel çalışan bir çözüm bulacağım, ancak WordPress her şeyi tekrar karıştıran bir güncellemeyi itecek. Tamamen nasıl çalışması gerektiğini bulduğum tek çözüm beni sahip olduğum en iyi cevaba götürüyor.
Seçenek 5: Korunmuş HTML Editör İşaretleme Plus
Bu yüzden baş ağrısını kurtar ve sadece bununla git. Varsayılan olarak, Korunmuş HTML Düzenleyici İşaretleme Plus yalnızca yeni sayfaları etkiler. Önceden oluşturulmuş sayfaları değiştirmek istiyorsanız, www.example.com/wp-admin/options-writing.php adresine gitmeli ve eklenti ayarlarını düzenlemeniz gerekir. Ayrıca, varsayılan yeni satır davranışını da değiştirebilirsiniz.
Not: Bunu kullanmaya karar verirseniz, yeni bir WordPress güncellemesi başlatıldığında destek dizisini kontrol ettiğinizden emin olun. Bazen, bir değişiklik işleri karıştırır, bu nedenle eklentinin yeni sürümlerde çalıştığından emin olmak en iyisidir.
Ekstra Kredi: Sorununuzda Hata Ayıklama / Diğer TinyMCE Seçeneklerini Düzenleme
TinyMCE yapılandırmalarınızı filtrelerde yaptığınız gibi manuel olarak incelemek ve kolayca düzenlemek istiyorsanız, gelişmiş TinyMCE yapılandırmasını yükleyebilirsiniz . Bu görmenizi sağlar TÜM basit bir arayüzden yapılandırılan TinyMCE seçenekler ve düzenlemek onları arasında. Filtrelerde olduğu gibi yeni seçenekler de ekleyebilirsiniz. İşleri daha kolay anlaşılır hale getirir.
Örneğin, hem bu hem de Korunmuş HTML Editör Markup Plus var. Aşağıdaki ekran görüntüsü Advanced TinyMCE Config yönetici sayfasından alınmıştır. Ekran görüntüsü, gerçekten orada olanların% 90'ını keserken, geçerli olan çocukların düzenlenebilir olduğunu ve hangilerinin Korunmuş HTML Düzenleyici Markup Plus'ın eklendiğini görebilirsiniz.
Bu, yalnızca düzenleyicinizi tamamen özelleştirmenin değil, aynı zamanda neler olduğunu görmenin de son derece yararlı bir yoludur. O zaman soruna neyin sebep olduğunu bile anlayabilirsin. Korunmuş HTML Düzenleyici İşaretleme etkinken parametreleri kendim inceledikten sonra özel bir filtreye eklenebilecek bazı ek seçenekler gördüm.
function fix_tiny_mce_before_init( $in ) {
// You can actually debug this without actually needing Advanced Tinymce Config enabled:
// print_r( $in );
// exit();
$in['valid_children']="+a[div|p|ul|ol|li|h1|span|h2|h3|h4|h5|h5|h6]";
$in[ 'force_p_newlines' ] = FALSE;
$in[ 'remove_linebreaks' ] = FALSE;
$in[ 'force_br_newlines' ] = FALSE;
$in[ 'remove_trailing_nbsp' ] = FALSE;
$in[ 'apply_source_formatting' ] = FALSE;
$in[ 'convert_newlines_to_brs' ] = FALSE;
$in[ 'verify_html' ] = FALSE;
$in[ 'remove_redundant_brs' ] = FALSE;
$in[ 'validate_children' ] = FALSE;
$in[ 'forced_root_block' ]= FALSE;
return $in;
}
add_filter( 'tiny_mce_before_init', 'fix_tiny_mce_before_init' );
Ne yazık ki bu yöntem işe yaramadı. Muhtemelen gönderi güncellenirken ve / veya editörler arasında geçiş yapılırken bazı regex veya JavaScript var. Korunmuş HTML Editör kaynak koduna bakarsanız, yönetici tarafında bazı JavaScript çalıştığını görebilirsiniz, bu nedenle son tavsiyem , temanıza bu işlevselliği eklemek istiyorsanız eklentinin nasıl çalıştığını kontrol etmek olacaktır .
Her neyse, cevabımda bu kadar ilerlemiş olanlar için üzgünüm. Sadece WordPress editörü ile ilgili kendi deneyimlerimi paylaşacağımı düşündüm, bu yüzden diğerleri umarım bunu anlamaya çalışarak saatler harcamak zorunda kalmazlar!