wp_editor textarea 값이 업데이트되지 않음


16

*_add_form_fields작업을 사용하여 사용자 지정 분류 체계에 필드를 추가하고 있습니다. 이러한 필드 중 하나는 wp_editor ()입니다.

내가 직면하고있는 문제는 페이지에서 WordPress 편집기를 다음과 같이 출력 할 때입니다.

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

그리고 나는 페이지의 편집기에서 클릭 한에서 기본 값을 변경하는 경우 test에 아직 설정되어 변수something else$_POST['my_description']test

편집기에 추가 설정을 추가해야합니까? 텍스트 영역의 값을 변경할 수없는 이유가 있습니까?

편집하다

다음은 이러한 상황을 보여주는 매우 간단한 테스트 사례입니다. 이 파일을 functions.php 파일에 넣고 새 태그 를 만듭니다 . '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();

편집하다

"created_term"조치에 첨부 ​​할 때만 발생합니다. "edited_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 ), 아마도 코드의 다른 문제가 있습니까?
Rob Vermeer

두 번째 편집을 참조하십시오. 이는 용어를 "추가"할 때만 발생합니다.
Mike

답변:


21

tinyMCE <textarea> 요소는 처음에 사용 된 직렬화 기능으로 보이지 않습니다.

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

tinyMCE.triggerSave()보이게 하려면 전화해야합니다 .

다음은 트릭을 수행해야하는 간단한 스 니펫입니다.

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

이 파일은 외부 파일에서 wp_enqueue_script(); 내가 수행 한 테스트에서 효과가있었습니다.


1
이것은 나를 위해 작동하지 않습니다. 데이터가 게시 된 다음 클릭 기능 코드가 트리거 된 것으로 나타납니다.
Mike

당신은 머리에 스크립트를 대기열에 넣었습니까? 바닥 글에 넣으면 wp-scripts 다음에로드되고 너무 늦습니다.
ungestaltbar

'click'대신에 실제로 $ ( '# submit'). mousedown (...) :)에 바인딩 할 수 있습니다.이 경우 스크립트가로드되는 위치와 시간은 중요하지 않습니다.
ungestaltbar

매력 감사처럼 일했습니다!
nitigyan

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


내 두 번째 의견을 참조하십시오.이 용어를 추가 할 때만 발생합니다. 그리고 이것이 아약스를 사용한 결과라고 생각합니다.
Mike

@Ajax를 어디에서 사용하고 있습니까?
Bainternet

새 범주 / 용어를 추가하면 WordPress는 ajax를 사용하여 데이터를 게시하고 새 용어를 만듭니다. 어떤 이유로 wp_editor 요소가 올바른 값을 가질 수 없습니다. 원래 질문에서 테스트 코드를 사용해보십시오.
Mike

1

wp_editor 의 코덱에 따르면 첫 번째 인수는 내용이어야합니다. 따라서 '테스트'보다는 $_POST['my_description']초기 콘텐츠가 원하는지 확인 해야 합니다.


2
문제는 내용이 올바르게 표시되지 않는 것입니다. 텍스트 영역 컨텐츠를 다른 것으로 변경하더라도 게시 된 변수가 원래 컨텐츠와 동일합니다.
Mike
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.