wp_editor textarea değeri güncellenmiyor


16

*_add_form_fieldsÖzel bir sınıflandırma için alan eklemek için eylem kullanıyorum . Bu alanlardan biri wp_editor ().

Karşılaştığım sorun, sayfadaki WordPress editörünü bu şekilde çıkardığım zaman:

wp_editor('test', 'mydescription', array('textarea_name' => 'my_description')); 

ve sonra sayfadaki editörü tıklayın ve Varsayılan değeri değiştirirseniz testiçin hala ayarlandığında değişkensomething else$_POST['my_description']test

Düzenleyicime ek bir ayar mı eklemeliyim? Metin alanının değerini değiştirmememin bir nedeni var mı?

DÜZENLE

Aşağıda bunun olduğunu gösteren çok basit bir test örneği verilmiştir. Bunu function.php dosyanıza yerleştirin ve ardından yeni bir etiket oluşturun . 'My_description "için gönderilen değer değişmeyecek.

class Test{

    function __construct() {

        add_action('add_tag_form_fields', array($this, 'add_tag_form_fields'));

        add_action('created_term', array($this, 'created_term'));
    }

    function add_tag_form_fields($tag){

        if ( current_user_can( 'publish_posts' ) ): ?>

        <div class="form-field">
            <?php wp_editor('test', 'mydescription', array('textarea_name' => 'my_description')); ?>
        </div>

        <?php
    }

    function created_term($tag){
        echo '<pre>';
        print_r($_POST);
        echo '</pre>';
            die();
    }
}
new Test();

DÜZENLE

Bu SADECE "created_term" eylemine eklenirken olur. "Edited_terms" eklerseniz beklendiği gibi çalışır ve bu terim oluşturma sayfasında kullanılan ajax bir sonucu olduğunu düşünüyorum ... Bunu göstermek için test kodunu güncelledik.


Benim için değişti: Array ( [action] => add-tag [screen] => edit-post_tag [taxonomy] => post_tag [post_type] => post [_wpnonce_add-tag] => 4f7d3df228 [_wp_http_referer] => /wp-admin/edit-tags.php?taxonomy=post_tag [tag-name] => Test99 [slug] => [description] => [my_description] => something else )belki kodunuzda başka bir şey sorun mu var?
Rob Vermeer

ikinci düzenlemeye bakınız. Bunun yalnızca bir terimi "eklediğinizde" gerçekleştiği görülmektedir.
Mike

Yanıtlar:


21

tinyMCE <textarea> öğesi başlangıçta kullanılan serileştirme işlevi tarafından görünmez:

$.post(
    ajaxurl,
    $('#addtag').serialize(), function(r) {
        // Content here.
    }
});

tinyMCE.triggerSave()Görünür hale getirmek için aramanız gerekir .

Aşağıda hile yapması gereken basit bir snippet vardır:

jQuery('#submit').mousedown( function() {
    tinyMCE.triggerSave();
});

Bu harici bir dosyada wp_enqueue_script(); Yaptığım test için işe yaradı.


1
Bu benim için işe yaramıyor. Verilerin gönderildiği, tıklama işlev kodunuzun tetiklendiği anlaşılıyor.
Mike

senaryoyu kafamda mı geçtin? Eğer altbilgide enqueue yaparsanız, wp komut dosyalarından sonra yüklenir ve bu çok geç olur.
ungestaltbar

'click' yerine aslında $ ('# send'). mousedown (...) :) 'a bağlayabilirsiniz. Bu durumda komut dosyasının nereye ve ne zaman yüklendiği önemli değildir.
ungestaltbar

Bir çekicilik gibi çalıştı teşekkürler!
nitigyan

4

Senin içinde edited_termsişlevi, değeri kaydetmek gerekir ve Gözlerinde farklı add_tag_form_fields istemiyorsun, mutfakta annene yerine gerek testkaydedilmiş verilerle.

gibi bir şey:

class Test{

    function __construct() {

        //do_action('add_tag_form_fields', $taxonomy);
        add_action('add_tag_form_fields', array($this, 'add_tag_form_fields'));

        //do_action("edited_terms", $term_id, $tt_id, $taxonomy);
        add_action('edited_terms', array($this, 'edited_terms'));
    }

    function add_tag_form_fields($term){

        if ( current_user_can( 'publish_posts' ) ): ?>

        <div class="form-field">
            <?php 
            $saved = get_option('termmeta_'.$term->term_id);
            $saved = (empty($saved))? 'test': $saved;
            wp_editor($saved, 'mydescription', array('textarea_name' => 'my_description')); ?>
        </div>

        <?php
    }

    function edited_terms($term_id){
        if (isset($_POST['mydescription'])){
            update_option('termmeta_'.$term_id,$_POST['mydescription']);
        }
    }
}
new Test();

Şimdi, tekerleği yeniden icat etmeden etiketlerinize / kategorilerinize veya özel sınıflandırma düzenleme formlarınıza her türden ekstra alan eklemenin çok daha kolay bir yolunu istiyorsanız, TAX Meta Class


İkinci yorumuma bakın, bunun yalnızca bir terim eklenirken olduğu anlaşılıyor. Ve bence bu ajax kullanarak bunun bir sonucu.
Mike

@ Ajax'ı nerelerde kullanıyorsunuz?
Bainternet

Yeni bir kategori / terim eklediğinizde WordPress, verileri yüklemek ve yeni terimi oluşturmak için ajax kullanır. Bazı nedenlerden dolayı bu, wp_editor öğesinin doğru değere sahip olmasına izin vermez. Orijinal sorudaki test kodunu deneyin.
Mike

1

Wp_editor kodeksine göre ilk argüman içerik olmalıdır. Bu yüzden 'test' yerine $_POST['my_description']ilk içeriğin olmasını istediğiniz şey buysa bunu koymalısınız .


2
sorun içeriğin doğru bir şekilde gösterilmesinden kaynaklanmaz. Yayınlanan değişken, textarea içeriğini başka bir şeye değiştirseniz bile orijinal içerikle aynıdır.
Mike
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.