WordPress WYSIWYG에서 iframe을 제거하지 않도록 설정


16

여러 가지 이유로 게시물에 iframe을 삽입 해야하는 블로그가 있습니다 (왜 나를 믿어야하는지 묻지 마십시오!)

"시각적"보기를 사용하여 게시물을 편집하면 WYSIWYG가 iframe을 일정하게 제거합니다 ...

"html"보기를 사용하고 "html"보기에서만보기 / 저장 만하면 게시물에 iframe을 유지할 수 있다는 것을 알고 있습니다. 그러나 실제로 WYSIWYG를 사용하여 게시물을 편집하고 싶습니다. "html"보기를 사용 하지 않아도됩니다.

이 동작을 비활성화하기 위해 할 수있는 일이 있습니까? 나는 이 글을 보았는데 , 그것은 편집을 제안 wp-includes/js/tinymce/tiny_mce_config.php하지만, 업그레이드에서 깨질 수있는 그런 일을 피하는 것이 좋습니다 !


귀하가 링크 한 게시물에는 Otto의 비 편집 필터 솔루션도 있습니다. 당신은 그것을 시도 했습니까?
Rarst

좀 더 명확히하기 위해, PHP를 해킹 할 필요가 없습니다. (설정을 잊어 버렸거나 업그레이드하고 깨뜨릴 것입니다 ...) 설정 사항 (PHP에있는 경우에도)이거나 iframe 주위에 약간의 코드를 배치하여 작동하는 것으로 말하면 할 수있는 일. 이 시점에서 나는 자바 스크립트를 사용하여 할 것 같지만 어지럽습니다.
저스틴 젠킨스

1
이에 대한 구성 옵션이 없으며 편집기에서이를 코딩 할 수있는 방법이 없습니다 (해결 방법이있는 경우 보안 허점이 될 수 있습니다). 언급 된 코드를 플러그인에 넣는 것이 가장 좋은 방법이며 업그레이드 후에도 유지됩니다 (업그레이드 할 때 플러그인이 삭제되지 않음).
Jan Fabry

@Jan, 우리가 모르는 것을 알고있는 누군가가 있기를 바랍니다. HTML이 아닌 시각적 부분에만 sec hole이라고 생각 하는가? 시각 모드에서 사람들의 코 아래로 물건을 미끄러 뜨리는 것이 더 쉽다는 것을 이해합니다 ...하지만 여전히.
저스틴 젠킨스

iframes동영상을 포함하는 데 유용합니다. 이 <object>방법은 플래시를 사용하지만 <iframe>요즘 대부분의 비디오 공유 사이트에서 지원 하는 방법은 HTML5 비디오를 허용합니다.
TRiG

답변:


9

자신의 코드를 작성하지 않으려는 경우 다음을 포함 할 수있는 플러그인이 있습니다 <iframe>:

그런 다음 단축 코드를 다음 과 같이 사용하십시오 .

[iframe http://example.com 400 500]

@ Ethan Seifert- 좋은 답변!
MikeSchinkel

이것은 내 질문에 실제로 적용되며 "해킹"이 필요하지 않습니다. 여전히 HTML보기를 사용해야하는 동안 ... 감사합니다.
저스틴 젠킨스

이 답변의 플러그인은 더 이상 최신 버전이 아니지만 대신에 좋아 보입니다 : wordpress.org/plugins/iframe
Tim Malone

23

TinyMCE의 필터를 사용자 정의 할 수 있습니다. TinyMCE에서 <iframe>Google지도를 사용하기 위한 s 및 기타 태그에 대해서는 다음 예를 참조하십시오 .

function fb_change_mce_options( $initArray ) {

    // Comma separated string od extendes tags.
    // Command separated string of extended elements.
    $ext = 'pre[id|name|class|style],iframe[align|longdesc|name|width|height|frameborder|scrolling|marginheight|marginwidth|src]';

    if ( isset( $initArray['extended_valid_elements'] ) ) {
        $ext = ',' . $ext;
    }
    $initArray['extended_valid_elements'] = $ext;

    // Maybe, set tiny parameter verify_html
    //$initArray['verify_html'] = false;

    return $initArray;
}
add_filter( 'tiny_mce_before_init', 'fb_change_mce_options' );

이것을 테마의 커스텀 플러그인 또는 functions.php에 추가하십시오. 또한 내 게시물에서 더 많은 정보를 읽을 수 있습니다 : http://wpengineer.com/1963/customize-wordpress-wysiwyg-editor/


@ bueltge- 좋은 대답. 나는 당신의 사이트에 오늘 일찍 그 게시물을 읽고 있었다. TinyMCE에 대한 웹상의 대부분의 예제는 WordPress와 관련이 없으며 WordPress와 관련하여 훨씬 더 복잡합니다. 당신은 그것을 잘 이해합니다. TinyMCE에 대해 더 많은 것을 다룰 수 있습니다. 그것에 대한 일련의 블로그 게시물을 고려한 적이 있습니까?
MikeSchinkel

나의 가장 큰 문제는 시간이다. 그러나 나는 또 다른 게시물을 내 초안 에서이 주제로 미끼로 만들고 다음 주에 이것을 게시 할 수 있습니다. 당신의 공물에 감사드립니다.
bueltge

1

워드 프레스 3.2.1로 업그레이드 한 다음 Embed Iframe을 설치해야했습니다.

워드 프레스에서 html에서 Visual로 앞뒤로 전환 할 때 iframe 태그가 더 이상 제거되지 않았습니다.


1

다중 사이트 환경에서 superadmin 이외의 모든 사용자는 잠재적 인 보안 취약성 때문에 html 필터링을받습니다 . 에 기반 당신은 편집자 unfiltered_html 기능을 추가 할 수 있습니다.

/**
 * Enable unfiltered_html capability for Editors.
 *
 * @param  array  $caps    The user's capabilities.
 * @param  string $cap     Capability name.
 * @param  int    $user_id The user ID.
 * @return array  $caps    The user's capabilities, with 'unfiltered_html' potentially added.
 */
function km_add_unfiltered_html_capability_to_editors( $caps, $cap, $user_id ) {
    if ( 'unfiltered_html' === $cap && user_can( $user_id, 'editor' ) ) {
        $caps = array( 'unfiltered_html' );
    }
    return $caps;
}
add_filter( 'map_meta_cap', 'km_add_unfiltered_html_capability_to_editors', 1, 3 );

0

단축 코드 솔루션에 추가 플러그인을 사용하지 않으려면 테마, 플러그인 또는 functions.php에이 행을 따라 무언가를 추가하여 직접 추가 할 수 있습니다. 필요한 경우 키 배열에 키를 더 추가해야 할 수도 있습니다.

add_shortcode( 'iframe' , 'mycustom_shortcode_iframe' );
function mycustom_shortcode_iframe($args, $content) {
    $keys = array("src", "width", "height", "scrolling", "marginwidth", "marginheight", "frameborder");
    $arguments = mycustom_extract_shortcode_arguments($args, $keys);
    return '<iframe ' . $arguments . '></iframe>';
}

function mycustom_extract_shortcode_arguments($args, $keys) {
    $result = "";
    foreach ($keys as $key) {
        if (isset($args[$key])) {
            $result .= $key . '="' . $args[$key] . '" ';
        }
    }
    return $result;
}

그런 다음 게시물 페이지에서 사용법은 다음과 같습니다.

[iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=New+York+City,+New+York,+USA&amp;aq=0&amp;oq=new+york&amp;sll=51.238455,6.81435&amp;sspn=0.373151,1.056747&amp;ie=UTF8&amp;hq=&amp;hnear=New+York+City,+New+York,+Vereinigte+Staaten&amp;t=m&amp;z=11&amp;iwloc=A&amp;output=embed"]

작동하지 않습니다. 방금 iframe을 동일한 콘텐츠로 게시
Ankit Agrawal

코드가 무엇을 원하는지 모르겠지만 컨텐츠에 iframe을 게시하면 코드가 수행해야합니다. 따라서 iframe이 프런트 엔드보기에 표시되면 모든 것이 예상대로 작동합니다.
SunnyRed

0

Fusion Editor 플러그인을 사용하여 Wordpress에서 내 페이지를 작성하면 효과가 있습니다.

이 비디오에서는 Fusion Builder를 사용하는 방법을 보여줍니다 (컨테이너, 열, 요소 및 코드 블록 추가에 대한 부분은 4:15로 건너 뛰기). https://www.youtube.com/watch?v=UDyNsnB_COA

컨테이너를 추가하려면 클릭 한 다음 요소 추가를 클릭 한 다음 텍스트 블록 대신 코드 블록 을 추가하십시오 (텍스트 블록은 iframe을 제거하지만 코드 블록은 그렇지 않습니다). 내 코드 블록에서 iframe 코드를 붙여 넣고 게시합니다. 훌륭하게 작동하며 PHP 파일을 수정할 필요가 없습니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.