Faça com que o WordPress WYSIWYG não elimine o iframe

14

Eu tenho um blog que muitas vezes preciso inserir iframes em posts por vários motivos (não pergunte por que confiar em mim!)

Quando uso a visualização "visual" para editar minhas postagens, o WYSIWYG separa meus iframes ...

Eu sei que posso manter os iframes no post se eu usar a visualização "html" e só visualizar / salvar na visualização "html" ... no entanto, eu realmente gostaria de poder usar o WYSIWYG normal para editar meu post sem ter que recorrer à visualização "html".

Existe algo que eu possa fazer para desativar esse comportamento? Eu vi este post , que sugere editar wp-includes/js/tinymce/tiny_mce_config.php , mas eu realmente evite fazer algo assim que provavelmente acabaria com uma atualização!

    
por Justin Jenkins 19.10.2010 / 09:13

6 respostas

9

Se você não quiser escrever seu próprio código, existe um plugin para permitir a incorporação de um <iframe> :

Depois é só usar o shortcode assim:

[iframe http://example.com 400 500]
    
por Ethan Seifert 21.10.2010 / 05:15
22

Você pode personalizar o filtro do TinyMCE, ver o exemplo a seguir para <iframe> s e outras tags para usar o Google Maps dentro do TinyMCE.

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

Adicione isto a um plugin customizado ou functions.php do tema. Além disso, você pode ler mais informações no meu post: enlace

    
por bueltge 19.10.2010 / 21:40
1

Eu tive que atualizar para o wordpress 3.2.1 e, em seguida, instalei o Iframe Incorporado e funcionou muito bem.

As datas do iframe não foram mais removidas ao alternar entre o html e o Visual no wordpress.

    
por WordpressDude 26.10.2011 / 08:04
1

No ambiente multisite, qualquer usuário que não seja superadmin obtém a filtragem de html (porque potenciais vulnerabilidades de segurança ). Com base em isso , você pode adicionar a opção Add unfiltered_html aos editores .

/**
 * 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 );
    
por docker 07.11.2017 / 13:09
0

Se você não gosta de usar um plugin adicional para a solução de shortcode, você pode adicionar algo ao longo destas linhas ao seu tema, plugin ou functions.php para adicioná-lo manualmente. Se necessário, você pode precisar adicionar mais algumas chaves ao array de chaves.

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;
}

Em seguida, na sua página de postagem, o uso seria assim:

[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"]
    
por SunnyRed 27.05.2013 / 18:58
0

Descobri que usar o plug-in Fusion Editor para criar minhas páginas no Wordpress funciona bem.

Este vídeo mostra como usar o Fusion Builder (pule para 4:15 para adicionar recipientes, colunas, elementos e blocos de código): enlace

Eu clico para adicionar um contêiner, clique em adicionar elemento e, em seguida, adicione um bloco de códigos em vez de um bloco de texto (o bloco de texto removerá um iframe, mas um bloco de código não). No meu bloco de código, colo meu código de iframe e publico. Funciona muito bem e não tenho que modificar nenhum arquivo PHP!

    
por Brandon Barney 01.10.2018 / 22:32