Özel bir gönderi türü için birden çok WYSIWYG editörüne sahip olmanın bir yolu var mı? Örneğin, 2 sütun düzenine sahip olsaydım bir sütun için bir editör, bir sütun için diğer editör olmak isterdim.
Özel bir gönderi türü için birden çok WYSIWYG editörüne sahip olmanın bir yolu var mı? Örneğin, 2 sütun düzenine sahip olsaydım bir sütun için bir editör, bir sütun için diğer editör olmak isterdim.
Yanıtlar:
Özel gönderi türünüzün çağrıldığını söyleyin, buna Properties
benzer bir kod kullanarak ilave tinyMCE editörünüzü tutmak için kutuyu ekleyeceksiniz:
function register_meta_boxen() {
add_meta_box("wysiwyg-editor-2", "Second Column", "second_column_box",
"properties", "normal", "high");
}
add_action('admin_menu', 'register_meta_boxen');
wysiwyg-editor-2
meta kutusunun uygulayacağı kimlik, meta kutusunun sahip olacağı Second Column
başlık, meta kutusunun second_column_box
HTML'sini yazdıran işlev, properties
özel yazı normal
türümüzdür, meta kutusunun konumu ve high
sayfada mümkün olduğunca yüksek gösterilmesi gerektiğini belirtir. (Genellikle varsayılan tinyMCE düzenleyicisinin altında).
Ardından, bunu en temel örnek olarak alarak, tinyMCE editörünü bir textareaya eklemelisiniz. second_column_box
Meta kutusunun HTML'sini basacak olan fonksiyonumuzu tanımlamamız gerekiyor, bu yüzden bu iş için herhangi bir yer kadar iyi:
function second_column_box() {
echo <<<EOT
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery("#tinymce").addClass("mceEditor");
if ( typeof( tinyMCE ) == "object" &&
typeof( tinyMCE.execCommand ) == "function" ) {
tinyMCE.execCommand("mceAddControl", false, "tinymce");
}
});
</script>
<textarea id="tinymce" name="tinymce"></textarea>
EOT;
}
Nasıl aşılacağından emin olmadığım birkaç sorun var. TinyMCE editörü, ideal olmayabilecek bir meta kutunun içine yerleştirilecek ve normal post editörünün sahip olduğu medya ekleme komutlarının yanı sıra HTML ve Görsel düzenleme modları arasında geçiş yapma özelliğine sahip olmayacak. Modları değiştirmek ilk argümanın ID olduğu bir fonksiyon olarak tanımlanmış gibi görünüyor, fakat yine de wp-tinymce betiğine kodlanmış gibi görünüyor. Bunu yapmak için yerleşik tinyMCE işlevlerini kullanmak mümkündür, ancak bu, WP HTML ekleme düğmelerinin hiçbiri olmadan, tam tinyMCE ve temel bir textarea arasındaki yazıyı değiştirir.
Birincisi: Büyük sayesinde hiç @Thomas McDonald için onun cevabı ; @ Paul Sheldrake’in sorduğu soruyu tam olarak bulmam gerekiyordu ve Thomas’ın kodu beni doğru yöne başlattı.
Maalesef takıldım çünkü TinyMCE'yi bir yan meta kutusunda kullanmam gerektiğinden, düzeni varsayılandan daha basit ve daha küçük bir düzene değiştirmem gerekti. Neredeyse her yerde bir çözüm aradım ve özellikle MoxieCode TinyMCE Wiki ve TinyMCE İpuçları ve Forum'a baktım ve hiçbir şey bulamadım! 1 Her şey nasıl sete açıkladı bulundu theme
, width
, height
kullanarak, vb tinyMCE.init({...})
ama görünüşe kullandığınız o zaman kullanamaz tinyMCE.execCommand("mceAddControl")
.
Hamilton Chua tarafından bir sayfada birden fazla TinyMCE 3 örneği makalesine rastladığımda çok şaşırmıştım ve o çiviledi! Onun çözümü, aramadan önce atamaktı , örneğin:tinyMCE.settings
tinyMCE.execCommand("mceAddControl")
<?php
$id = "sidebar-content";
$script = <<<EOT
<script type="text/javascript">
jQuery(document).ready(function($) {
$("#{$id}").addClass("mceEditor");
if ( typeof( tinyMCE ) == "object" &&
typeof( tinyMCE.execCommand ) == "function" ) {
tinyMCE.settings = {
theme : "advanced",
mode : "none",
language : "en",
height:"200",
width:"100%",
theme_advanced_layout_manager : "SimpleLayout",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : ""
};
tinyMCE.execCommand("mceAddControl", true, "{$id}");
}
});
</script>
<textarea id="sidebar-content" name="sidebar-content"></textarea>
EOT;
Üzücü kısmı, bu gerçekten zor değildi, ama bulabildiğim başka hiçbir yerde belgelenmedi. Bu sorunu neredeyse hiç kimsenin yaşamadığını keşfetmek şaşırtıcı.
Her neyse, yukarıdaki kod tam olarak müşterimin ihtiyaç duyduğu biçimde / düzende aşağıdaki ikinci TinyMCE'yi üretti:
(kaynak: mikeschinkel.com )
Bu yüzden yukarıdaki @Thomas McDonald kodunu kullanıyorsanız , düzende değişiklik yapma gereği duyduğunuzu görüyorsunuz, Hamilton Chua’nın harika makalesine göz atmayı unutmayın (teşekkürler Ham!) :
PS Eğer biraz yanlış bir şey yaparsanız, TinyMCE hiç görünmeyebilir. Örneğin benim durumumdatheme: "simple"
ilk başta kullanıyorum ve hiçbir şeyim yok ve sadece kullanmam gerektiğini fark etmem bir saatten fazla sürdütheme: "advanced"
. Eğer TinyMCE'in sizin için çalışmadığını fark ederseniz, bir şeyleri değiştirmeyi denediğinizden emin olabilirsiniz, benzer bir probleminiz olabilir. (BTW, başka temaları denemedim ya da başka nelerin mevcut olduğunu araştırmadım; işin diğer temalarını bulursanız, lütfen aşağıdaki yorumu yapınız.)
1 : Çok sinir bozucu! WordPress Cevap ile bir aydan biraz daha uzun bir süre sonra, şimdi tüm sorularıma cevapları buradaki kalite seviyesiyle bulmayı bekliyorum ve başka yerlerde de genellikle hayal kırıklığı buluyorum!
$script
ve ayrıca heredoc için kapanış yok, yani. EOT;
. Küçük hataların dışında iyi bir çalışma örneğidir;;)
Bu makaleyi Google’da ilk sonuç olarak bulduğum için, WP’nin şimdi bu tür bir görevi yerine getirmek için bir işlev sunduğunu yorumlamak istedim.
İçinde add_meta_box
işlevi, aşağıdaki kodu ekleyin ->
wp_editor( $content, $editor_id, $settings = array() );
TinyMCE editörünü nereye eklemek istersen
Referans: wp_editor
Varsayılan düzenleyici tinymce, wp-admin / include / include.php içindeki wp_tiny_mce () işlevindeki bir işlevle yüklenir; Kaynağa 1350 satırında bakın. 1478 satırında bir dizi ayar vardır. Seçeneklerden biri, javascript editörünü uygulamak için textarea seçicisini açıkça gösterir. Ben okuyordum Keighl tarafından bu yazı ona doğru beni işaret onun blog. Makaleyi okuyun ve belki de bir yönetici bölüm eklentisinde wp_tiny_mce () 'yi çağırmanın ve onu oluşturduğunuz ikinci bir metin alanına uygulamanın bir yolu vardır.
Ben sadece bir editöre sınıf niteliği olarak "TheEditor" u ekleyerek anladım:
<div style="background: #FFF; border: 1px solid #CCC;"><textarea id="my_details_field" name="my_details" class="theEditor" rows="20" style="width: 100%;"><?=get_post_meta($post->ID, 'my_details', TRUE)?></textarea></div>