wp_editor textarea मान अद्यतन नहीं कर रहा है


16

मैं *_add_form_fieldsएक कस्टम टैक्सोनॉमी में फ़ील्ड जोड़ने के लिए कार्रवाई का उपयोग कर रहा हूं । उन क्षेत्रों में से एक wp_editor () है।

मैं जिस समस्या का सामना कर रहा हूं वह यह है कि जब मैं पृष्ठ पर वर्डप्रेस संपादक को आउटपुट करता हूं तो:

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

और फिर अगर मैं पृष्ठ पर संपादक में क्लिक करें और से डिफ़ॉल्ट मान बदलने testके लिए चर अभी भी करने के लिए सेट कर दिया जाताsomething else$_POST['my_description']test

क्या मुझे अपने संपादक में एक अतिरिक्त सेटिंग जोड़नी चाहिए? क्या कोई कारण है कि मैं टेक्स्टारिया के मूल्य को बदल नहीं सकता हूं?

संपादित करें

नीचे एक बहुत ही सरल परीक्षण मामला दिखाया गया है जो ऐसा हो रहा है। इसे अपने फ़ंक्शंस में रखें। एफपी फ़ाइल और फिर एक नया टैग बनाएं । 'My_description "के लिए पोस्ट किया गया मान नहीं बदलेगा।

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();

संपादित करें

यह केवल तब होता है जब "create_term" क्रिया के साथ संलग्न किया जाता है। यदि आप "edit_terms" से जुड़ते हैं तो यह अपेक्षित रूप से काम करता है और मुझे लगता है कि यह ajax का एक परिणाम है जिसका उपयोग टर्म पेज पर किया जा रहा है ... मैंने इसे दिखाने के लिए परीक्षण कोड को अपडेट किया है।


यह मेरे लिए बदल गया है: 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 )शायद आपके कोड में कुछ और एक समस्या है?
रोब वर्मियर

दूसरा संपादन देखें। ऐसा प्रतीत होता है कि यह केवल तब होता है जब आप एक शब्द "जोड़ते हैं"।
माइक

जवाबों:


21

स्मॉलमसीई <textarea> तत्व का उपयोग शुरू किए गए क्रमबद्ध फ़ंक्शन द्वारा शुरू में अनदेखा किया गया है:

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

tinyMCE.triggerSave()इसे दृश्यमान बनाने के लिए आपको कॉल करना होगा।

नीचे एक सरल स्निपेट दिया गया है जो कि चाल करना चाहिए:

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

एक बाहरी फ़ाइल में, इसके साथ संलग्न wp_enqueue_script(); यह मेरे द्वारा किए गए परीक्षण के लिए काम किया।


1
यह मेरे लिए काम नहीं करता है। ऐसा प्रतीत होता है कि डेटा पोस्ट किया गया है, जब आपका क्लिक फ़ंक्शन कोड चालू हो जाता है।
माइक

क्या आपने स्क्रिप्ट को सिर में धारण किया है? यदि आप इसे पाद लेख में संलग्न करते हैं, तो इसे wp-script के बाद लोड किया जाएगा और यह बहुत देर हो जाएगी।
--१२०

'क्लिक' के बजाय आप वास्तव में इसे $ ('# सबमिट') से जोड़ सकते हैं। मूसडाउन (...) :) इस मामले में यह मायने नहीं रखता है कि स्क्रिप्ट कहाँ और कब लोड हुई है।
२०:२

आकर्षण की तरह काम किया धन्यवाद!
निटिज्यान

4

आपके edited_termsफ़ंक्शन में आपको मान को सहेजने की आवश्यकता होती है और आपके लिए add_tag_form_fields आपको testसहेजे गए डेटा के साथ प्रतिस्थापित करने की आवश्यकता होती है ।

कुछ इस तरह:

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();

अब यदि आप सभी प्रकार के अतिरिक्त क्षेत्रों को अपने टैग / श्रेणी या कस्टम टैक्सोनॉमी एडिट फॉर्म में जोड़ना चाहते हैं, तो पहिया को फिर से देखे बिना, एक नज़र डालें TAX Meta Class


मेरी दूसरी टिप्पणी देखें, ऐसा प्रतीत होता है कि यह केवल एक शब्द जोड़ने पर होता है। और मुझे लगता है कि यह अजाक्स का उपयोग करने का एक परिणाम है।
माइक

@ माइक क्या अजाक्स जहां आप अजाक्स का उपयोग कर रहे हैं?
बैनटर्नट

जब आप एक नई श्रेणी / शब्द जोड़ते हैं तो वर्डप्रेस ajax का उपयोग डेटा पोस्ट करने और नया शब्द बनाने के लिए करता है। किसी कारण से यह wp_editor तत्व को सही मान नहीं देता है। मूल प्रश्न में परीक्षण कोड का प्रयास करें।
माइक

1

Wp_editor के कोडेक्स के अनुसार पहला तर्क सामग्री होना चाहिए। इसलिए 'परीक्षण' के बजाय आपको यह कहना चाहिए $_POST['my_description']कि क्या आप प्रारंभिक सामग्री को पसंद करेंगे।


2
समस्या ठीक से दिखाई देने वाली सामग्री के साथ नहीं है। यह पोस्ट किए गए चर मूल सामग्री के समान होने के साथ है भले ही आप textarea सामग्री को किसी और चीज़ में बदल दें।
माइक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.