2016-11-17 3 views
0

사용자가 저장을 클릭하지 않은 경우를 대비하여 동적 wp 편집기의 자동 저장을 설정하려고합니다. (현재 AJAX 버튼을 사용하여 저장합니다.) 사용자는 0 ~ 20 개의 개별 항목을 가질 수 있습니다.wp 편집기 설정 배열 자동 저장 기능 onchange

tymymce가 초기화 될 때 추가되도록 wp_editor 설정 배열에 뭔가를 추가해야합니다. 설정 배열이 작동합니다. 미디어 버튼을 추가하거나 제거 할 수 있습니다. 그러나 활성 편집기가 변경 될 때 뭔가를 실행시키기 위해 올바른 코드를 설정에 삽입 할 수없는 것 같습니다.

다음은 내가 가지고있는 것입니다.

$editorSettings = 
array ('media_buttons' => false, 
     'resize' => false, 
     'wp_autoresize_on' => true, 
     'setup' => "function(ed) { 
         ed.onChange.add(function(ed, l) { 
         console.debug('Editor contents was modified. Contents: ' + l.content); 
         }); 
        });" 
); 

이 코드가있는 편집기를 작성하십시오.

<?php wp_editor(stripslashes($j->journal_entry), 'journal-edit-'.$i , $editorSettings ); ?> 

내가 이미 작성한 AJAX 저장 코드를 실행하는 것이 이상적입니다. 그러나 변경 이벤트는 발생하지 않습니다.

이 작업을 수행하는 가장 좋은 방법입니까, 아니면 wp_editor 기능 외부에서 뭔가를 만들어야합니까? 수동으로 tinymce를 시작하고 수정할 수는 있지만 Wordpress를 통과하려고 할 때는 많은 코드를 찾을 수 있습니다.

비교할 숨겨진 필드를 설정하는 방법에 대해 생각해 보았지만이 방법이 좋지 않은 것처럼 보입니다. 기능을 처음부터 새로 만드는 대신 활용할 수있는 빌드가 있어야합니다.

도움을 주셔서 감사합니다.

답변

0

설정 배열을 통해이를 원하지 않는 것처럼 보입니다. 대신이 코드 pre_init를 삽입하는 필터를 추가하십시오. 다음 코드는 저장 버튼을 "클릭"하고 wordpress의 tinymce에서 change 이벤트가 발생할 때 콘솔에 인쇄합니다.

설치 js 문자열을 축소해야하거나 콘솔에 오류가 발생합니다.

functions.php 파일에 다음과 같이 추가하십시오. 참고 : '이 코드 중 일부에서 이스케이프해야 함수 파일을 오류가 발생하지 않았습니다.

function mce_autosave_mod($init) { 
    $init['setup'] = 'function(a){a.on("change",function(b){jQuery(this).parent().find(\'#btnEditCharJournal\').trigger("click"),console.log("the event object ",b),console.log("the editor object ",a),console.log("the content ",a.getContent())})}';  
    return $init; 
} 
add_filter('tiny_mce_before_init', 'mce_autosave_mod'); 

모든 종류의 다른 코드를 여기에 넣을 수 있습니다. 사이트의 특정 편집기로이를 제한하는 논리를 추가하는 것도 좋은 생각입니다. 편집기의 모든 인스턴스에 대해이 실행을 원하지 않습니다.

이 내용을 정리하거나 더 좋은 방법이 있으면 알려 주시기 바랍니다. 나는 필터와 wp_editor/tinymce에 상당히 익숙하다.