it-swarm.com.de

WordPress ändert ständig meinen Einbettungscode

Jedes Mal, wenn ich einen WordPress-Post oder eine WordPress-Seite bearbeite, in die eine Google Map eingebettet ist, werden Teile der Daten mit WordPress im "visuellen" Bearbeitungsmodus gelöscht.

zum Beispiel: dies

<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;msa=0&amp;msid=212526618623367333770.00049b7dc074f6426719d&amp;t=h&amp;ll=34.926059,-81.964874&amp;spn=0.300106,0.458336&amp;output=embed"></iframe><br /><small>View <a href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;msa=0&amp;msid=212526618623367333770.00049b7dc074f6426719d&amp;t=h&amp;ll=34.926059,-81.964874&amp;spn=0.300106,0.458336&amp;source=embed" style="color:#0000FF;text-align:left">1825 Spartanburgh Map</a> in a larger map</small>

verwandelt sich in

<small>View <a style="color: #0000ff; text-align: left;" href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;msa=0&amp;msid=212526618623367333770.00049b7dc074f6426719d&amp;ll=34.926059,-81.943846&amp;spn=0.300106,0.416279&amp;source=embed">1825</a> in a larger map</small>

Womit die Karte überhaupt nicht gerendert wird.

Dies passiert nicht, wenn ich im "html" -Modus bearbeite.

Wie kann ich verhindern, dass Wordpress diesen Einbettungscode ändert?

1
Dale

Das Problem ist die WordPress-Kernkonfiguration von TinyMCE, die IFRAME-Tags entfernt.

Sie können diese Konfiguration ändern, um IFRAME-Tags zuzulassen, indem Sie sich in tiny_mce_before_init einhängen. Der folgende Code verhindert beispielsweise, dass TinyMCE IFRAME-, PRE- und DIV-Tags entfernt:

function mytheme_tinymce_config( $init ) {

// Change code cleanup/content filtering config

    // Don't remove line breaks
    $init['remove_linebreaks'] = false; 
    // Convert newline characters to BR tags
    $init['convert_newlines_to_brs'] = true; 
    // Preserve tab/space whitespace
    $init['preformatted'] = true; 
    // Add to list of formats to remove with Remove Format button
    $init['removeformat_selector'] = 'b,strong,em,i,span,ins,del,h1,h2,h3,h4,h5,h6,pre';
    // Do not remove redundant BR tags
    $init['remove_redundant_brs'] = false;

// Add to list of valid HTML elements (so they don't get stripped)

    // IFRAME
    $valid_iframe = 'iframe[id|class|title|style|align|frameborder|height|longdesc|marginheight|marginwidth|name|scrolling|src|width]';
    // PRE
    $valid_pre = 'pre[id|name|class|style]';
    // DIV
    $valid_div = 'div[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]';

    // Concatenate 
    $cbnet_valid_elements = $valid_iframe . ',' . $valid_pre . ',' . $valid_div;

    // Add to extended_valid_elements if it alreay exists
    if ( isset( $init['extended_valid_elements'] ) ) {
        $init['extended_valid_elements'] .= ',' . $cbnet_valid_elements;
    } else {
        $init['extended_valid_elements'] = $cbnet_valid_elements;
    }

// Pass $init back to WordPress
    return $init;
}
add_filter('tiny_mce_before_init', 'mytheme_tinymce_config');

Hier finden Sie die vollständige Liste der konfigurierbaren Optionen .

3
Chip Bennett

Ich weiß es nicht genau, aber ich denke, es hängt möglicherweise mit den erlaubten Tags für Posts zusammen. Siehe meine Frage von vor ein paar Tagen. Grundsätzlich filtert WordPress unzulässige Tags heraus. So könnten Sie beispielsweise Skript-Tags verhindern. Sie müssen auch angeben, welche Parameter zulässig sind. So könnten Sie zum Beispiel ein img-Tag mit dem Attribut src zulassen, aber nicht mit dem Attribut alt.

Was sind erlaubte Posttags und erlaubte Tags?

1
mrtsherman