2017-10-13 6 views
0

워드 프레스에서 비주얼 편집기에 문제가있는 고객이 있는데, 내 인생에서 내 고객의 문제를 복제 할 수 없습니다. 스타일링 목적 TinyMCE on WordPress 클라이언트 컴퓨터의 오작동

약간의 배경

...

  • 는, 사용자 정의 코드로 내용 영역 에 특정 요소가있다/데이터는 하드 코딩 내게로 텍스트 편집기에서 속성. 내가 은 주로 Foundation 프레임 워크 (Zurb에 의해)에서 작동하며, 이 익숙하지 않은 경우 마크 업에는 '데이터 탭'또는 '데이터 아코디언'과 같은 html 속성이있어 프론트 사이드 템플릿에서 특정 양식 구성 요소를 사용할 수 있습니다. 종료.
  • 나는 또한 접근성에 많은 노력을 기울이고 있으므로 많은 경우에 필요한 경우 ARIA 특성을 추가하는 경우가 많습니다.
  • 제 고객은 교육 분석 데이터를 다루기 때문에 콘텐츠 영역에 일부 iframe이 포함되어 있습니다. 내 클라이언트가 비주얼 편집기에서 텍스트 내용을 편집하려고하고 편집기가 어떤 내가 넣어 사용자 지정 코드, 데이터 속성 스트립과 크게 모두은 iframe을 삭제할 때

문제가 발생합니다.

  • 심지어 프로젝트 개월간 맡았던 전에 핸드 오프하기 전에, 내가 추가 한 'valid_elements', 워드 프레스 필터 'tiny_mce_before_init'허용하도록 설정 'extended_valid_elements'규칙 : 여기

    내가 지금까지 한 일이다 원하는 종류의 애트리뷰트/데이터 세트
  • 문제가보고 된 이후로 ARIA 속성을 특별히 추가하여 제거되지 않도록했습니다.
  • iframe이 제거되는 경우 iframe을 다음과 같이 지정합니다. 컨테이너의 유효한 하위 항목 및 iframe은 모든 항목을 가질 수 있습니다. 필요한 속성들
  • 적어도 내 환경에서는 시각 및 텍스트 편집기를 앞뒤로 전환하고, 다른 측면에서 내용을 편집하는 동안 Visual/Text에서 진행 상황을 저장하고, 자동 저장/제도/강제 종료하고 브라우저 백업을 사용하여 코드/속성/iframe이 지금까지 사라지지 않았습니다 (클라이언트에게 프로젝트를 넘겨주고 고객이 문제를보고 한 후).
  • iOS 및 Windows 환경에서 Chrome, Firefox, Internet Explorer, Safari 및 Opera로 테스트했습니다.
  • 고객에게 작업 환경이 어떤지, 고객이 Mac을 사용하고 있으며 나는 여분의 추가

    $opts = '*[*]'; 
    $initArray['valid_elements'] = $opts; 
    $initArray['extended_valid_elements'] = $opts; 
    

    : 클라이언트는

이 내 클라이언트도 문제가보고하기 전에 필터에 추가 된 것입니다 파이어 폭스/사파리에 설치된 애드 블록 또는 스크립트 블록과 같은 어떤 브라우저 확장명이 없습니다 이후 규칙을 수정했고,

$initArray['valid_elements'] = $opts. ',@[role|aria-hidden|aria-checked|aria-selected|aria-pressed|aria-label|aria-labelledby|aria-disabled|aria-grabbed|aria-controls|aria-describedby|aria-required|tabindex|class|style|data-tabs|data-tabs-content|data-equalizer|data-equalizer-watch|data-equalize-on|data-count|data-ratio|frameborder|allowFullScreen|allowfullscreen]'; 
$initArray['extended_valid_elements'] = 'iframe[title|class|type|width|height|src|frameborder|allowFullScreen|allowfullscreen|data-ratio]'; 
$initArray['valid_children'] = '+p[iframe],+div[iframe]'; 
$initArray['invalid_elements'] = ''; 

내가 유효한 아이들은 iframe을 추가, 특히 유효하지 않은 요소가 없는지 TinyMCE에 말했다 : 나는 (functions.php에서) 지금 바로이 것입니다.

...그리고 클라이언트는 여전히 동일한 문제를 겪고 있으며 왜 이런 일이 일어나고 어떻게 해결할 수 있는지에 대한 통찰력이 필요합니다.

누구나 비슷한 경험을했거나이 문제에 대한 답변을 얻을 수 있습니까?

편집 : 현재 플러그인없는 해결책을 찾고 있습니다. 플러그인을 사용하는 데는 아무런 문제가 없습니다.하지만이 문제를 해결하기 위해 여분의 코드를 작성하여 수행 할 수 있다면 사용하지 않을 것입니다.

편집 2 : 삭제되는 iframe은 현재 더 중요한 문제입니다. 속성은 내 클라이언트의 손아귀에서 손상되지 않은 것처럼 보입니다.

업데이트 : 문제를 파악했습니다. 그것은 TinyMCE와 아무 관련이 없습니다. 내가 무시한 한 가지 사실은 웹 사이트가 멀티 사이트이고 관리자 계정에 실제로 'unfiltered_html'기능이 없다는 것입니다. 그것은 내가 모르는 뭔가 였고, 이제는 알고 있습니다.

답변

0

WordPress는 KSES 기능을 사용하여 TinyMCE에서 편집 된 모든 내용을 정리합니다. 따라서 TinyMCE 설정의 일부 태그를 화이트리스트에 등록한 경우에도 WordPress는 자체 KSES 기능을 사용하여 콘텐츠를 필터링하고 허용되지 않는 태그를 제거합니다. 기본적으로 관리자 만 콘텐츠에서 IFRAME을 사용할 수 있으며 다른 사용자의 경우 저장시 제거됩니다. 다음은 KSES가 콘텐츠에서 사용할 수있는 태그 조작에 관한 기사입니다 : KSES Tricks. 비슷한 방법을 사용하면 모든 사용자에 대해 허용 된 태그 목록에 IFRAME을 추가 할 수 있습니다.

+0

통찰력을 주셔서 감사합니다.하지만 아마도 몇 가지 세부 사항을 분명히해야했습니다. 제 의뢰인은 특권을 가지고 있으며 그 일을 저장하지 않았습니다. 내 지식에 따르면, KSES는 저장/업데이트 게시판에서 화재가 발생합니까? 클라이언트는 변경 작업을 수행하고 iframe이 사라 졌음을 인식하고 페이지를 떠난다. 단지 자동 저장 (iframe이 제거 된 개정 내역에서 볼 수 있음)을 남겨두기 만하면된다. 그래서 나는 이것이 TinyMCE 나 WordPress에서하는 일이 점점 더 적다는 것을 믿기 시작한 것입니다. 오히려 그것은 나의 클라이언트의 컴퓨터에서이 일을 일으키는 것입니다. – meisterTTL

+0

편집 프로세스를 디버깅해야합니다. 서버로 전송되는 내용, 처리되는 내용 및 IFRAME이 제거 된시기입니다. 나는 그것을하는 브라우저에서 아무것도 모르지만, 크롬 (또는 다른 브라우저) 확장 기능이 가능할 수도 있습니다. –

+0

죄송 합니다만, 'admin'권한을 의미하지만, 어쨌든 내 클라이언트는 브라우저 확장이나 플러그인이 실행 중이라고 주장하지 않았으며 편집 프로세스를 방해 할 수있는 사항을 알지 못합니다. 나는 내 고객을 얼마나 믿을 까, 나는 보통하지 않는다. 그러나이 시점에서 나는 내가 가진 것에 맞춰야 만한다. 이 문제를 일으킬 수있는 브라우저 확장 프로그램/플러그인에 대해 자세히 살펴 보겠습니다. – meisterTTL