AJAX ile wp_editor nasıl yüklenir


17

WordPress AJAX üzerinden wp_editor nasıl yük bilen var mı?

İşaretlemem ve düzenleyicim düzgün yükleniyor ancak editör denetimleri düzgün yüklenmiyor, bunun nedeni Javascript'in AJAX çağrısında çalışmaması olabilir.

Herhangi bir yardım mutluluk duyacağız.


Çalışmak çok şey. Carrington Build veya Advanced Custom Fields'in bazı kodlarına göz atın (sanırım ...). Sadece sinirli olmaya hazır olun.
MikeNGarrett

Yanıtlar:


7

Ana sorun eksik komut dosyalarıdır. Sıralanan komut dosyaları _WP_Editors::enqueue_scripts()hiçbir zaman yazdırılmaz. Aynı şey için de geçerlidir _WP_Editors::editor_js().

Yani bunu AJAX geri arama işleyicinizde yapmanız gerekir. Bir demo eklentisi yazdım ve GitHub: T5 AJAX Editör'e koydum .

Adında bir sınıf var Ajax_Editor. Yöntemi render()editörü AJAX isteklerine yazdırır.

public function render()
{
    if ( ! $this->validator->is_valid( TRUE ) )
        die( 'nope' );

    wp_editor( $this->data->get(), $this->editor_id, $this->settings );
    \_WP_Editors::enqueue_scripts();
    print_footer_scripts();
    \_WP_Editors::editor_js();

    die();
}

Kesin sipariş önemlidir, die()sonunda unutmayın . Henüz çalışmayan şey medya yüklemesidir. Bunu eklemeye çalıştığımda bir JavaScript hatası alıyorum.

Aramanın print_footer_scripts();size beklenenden daha fazlasını vereceğini unutmayın: bazı eklentiler (örneğin, Sorgu Monitörü) komut dosyalarını AJAX istekleri için bile olsa, orada ihtiyaç duymasalar bile kaydettirirler.


Çok teşekkürler! 2 gün beni iş bulmaya kurtardın! bununla ilgili tek şey, özel bir yazı türüne dahil etmek istiyorsanız, diğer düzenleyiciyle çakışıyor :(
numediaweb

arayan herkes için, WP 4.8'den sonra bunu JS API aracılığıyla daha kolay (ve temiz bir şekilde) yapabilirsiniz wp.editor.initialize: wordpress.stackexchange.com/a/274608/76440
majick

0

Bununla mücadele ettikten sonra, geri çağrıda çalışan tek hatlı çözümü buldum:

tinymce.execCommand( 'mceAddEditor', true, element.id );

Hiçbir fikrim neden tinymce içinde belgeleri bulamadık.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.