Machen Sie WordPress WYSIWYG nicht Iframes ausziehen

16

Ich habe ein Blog, in dem ich aus verschiedenen Gründen häufig iframes in Posts einfügen muss (frag nicht, warum du mir einfach vertraust!)

Wenn ich die "visuelle" Ansicht verwende, um meine Beiträge zu bearbeiten, entfernt das WYSIWYG meine iframes ...

Ich weiß, dass ich die iframes im Beitrag behalten kann, wenn ich die "html" -Ansicht verwende und nur in der "html" -Ansicht ansehe / speichere ... aber ich möchte wirklich in der Lage sein, das normale WYSIWYG zum Bearbeiten meines Beitrags zu verwenden ohne auf die "html" -Ansicht zurückgreifen zu müssen.

Kann ich etwas tun, um dieses Verhalten zu deaktivieren? Ich habe diesen Beitrag gesehen , der eine Bearbeitung vorschlägt wp-includes/js/tinymce/tiny_mce_config.php, aber ich würde es wirklich lieber vermeiden, so etwas zu tun, das wahrscheinlich nur ein Upgrade unterbrechen würde!

Justin Jenkins
quelle
Der Beitrag, mit dem Sie verknüpft sind, enthält auch eine nicht bearbeitbare Filterlösung von Otto. Hattest du das versucht?
Rarst
Um ein bisschen mehr zu verdeutlichen, möchte ich lieber kein PHP hacken müssen, um es zu tun (ich würde wahrscheinlich etwas vergessen, upgraden und auflösen) ... wenn es eine Einstellungssache ist (auch wenn das in PHP ist) oder Etwas, das ich tun kann, indem ich ein bisschen Code um meinen Iframe wickle, das auch funktionieren würde. An diesem Punkt werde ich wahrscheinlich nur etwas Javascript verwenden, aber das scheint chaotisch.
Justin Jenkins
1
Hierfür gibt es keine Konfigurationsoption und es gibt keine Möglichkeit, sie im Editor zu umgehen (es wäre eine Sicherheitslücke, wenn eine Problemumgehung vorhanden wäre). Das Einfügen des genannten Codes in ein Plugin ist der beste Weg, um dies zu tun, und es wird auch Upgrades überleben (Plugins werden beim Upgrade nicht gelöscht).
Jan Fabry
@Jan, Ich hoffe, es gibt jemanden, der etwas weiß, was wir nicht wissen ... Wenn nicht, danke. Scheint seltsam, dass es nur im visuellen Teil eine Sicherheitslücke gibt, nicht im HTML? Ich verstehe, dass es im visuellen Modus einfacher ist, Dinge unter die Nase zu bekommen ... Aber trotzdem.
Justin Jenkins
iframessind nützlich zum Einbetten von Videos. Die <object>Methode basiert auf Flash, wohingegen die <iframe>Methode, die die meisten Websites für die gemeinsame Nutzung von Videos heutzutage unterstützen, HTML5-Videos zulässt.
TRiG

Antworten:

9

Wenn Sie keinen eigenen Code schreiben möchten, gibt es ein Plugin, mit dem Sie Folgendes einbetten können <iframe>:

Dann benutze einfach den folgenden Shortcode :

[iframe http://example.com 400 500]
Ethan Seifert
quelle
@Ethan Seifert - Schöne Antwort!
MikeSchinkel
Dies gilt wirklich für meine Frage, kein "Hacken" erforderlich. Ich muss noch die HTML-Ansicht verwenden ... Danke.
Justin Jenkins
Das Plugin in dieser Antwort ist nicht mehr aktuell, aber dieses sieht stattdessen gut aus: wordpress.org/plugins/iframe
Tim Malone
23

Sie können den Filter von TinyMCE anpassen. Im folgenden Beispiel finden Sie Informationen zu <iframe>s und anderen Tags für die Verwendung von Google Maps in 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' );

Fügen Sie dies einem benutzerdefinierten Plugin oder functions.php des Themas hinzu. Sie können auch weitere Informationen in meinem Beitrag lesen: http://wpengineer.com/1963/customize-wordpress-wysiwyg-editor/

bueltge
quelle
@bueltge - Schöne Antwort. Ich war gerade auf Ihrer Website und habe diesen Post heute vorhin gelesen. Sie wissen, dass die meisten Beispiele im Web für TinyMCE nicht im Kontext von WordPress stehen und im Kontext von WordPress wesentlich komplizierter sind. Du verstehst es klar und deutlich. Über TinyMCE können Sie noch viel mehr berichten. Hast du darüber nachgedacht, eine Reihe von Blog-Posts darüber zu schreiben?
MikeSchinkel
Mein größtes Problem ist die Zeit; Aber ich habe einen anderen Beitrag zu diesem Thema in meinen Entwürfen und vielleicht poste ich diesen in den nächsten Wochen. Danke für deinen Tribut.
Bueltge
1

Ich musste auf WordPress 3.2.1 upgraden und dann Embed Iframe installieren und es funktionierte großartig.

Die Iframe-Tags wurden nicht mehr entfernt, wenn in WordPress von HTML zu Visual gewechselt wurde.

WordpressDude
quelle
1

In einer Umgebung mit mehreren Standorten erhält jeder andere Benutzer als Superadmin eine HTML-Filterung (wegen potenzieller Sicherheitslücken ). Auf dieser Grundlage können Sie den Editoren die Funktion "Ungefiltertes_Html hinzufügen" hinzufügen.

/**
 * 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 );
Docker
quelle
0

Wenn Sie kein zusätzliches Plugin für die Shortcode-Lösung verwenden möchten, können Sie Ihrem Theme, Plugin oder functions.php etwas Ähnliches hinzufügen, um es manuell hinzuzufügen. Bei Bedarf müssen Sie möglicherweise weitere Schlüssel zum Key-Array hinzufügen.

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

In Ihrer Beitragsseite würde die Verwendung dann so aussehen:

[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"]
SunnyRed
quelle
es funktioniert nicht. Es ist einfach, den Iframe als gleichen Inhalt zu veröffentlichen
Ankit Agrawal
Ich weiß nicht, was der Code tun soll, aber das Posten des Iframes in dem Inhalt, wie Sie ihn geschrieben haben, ist das, was der Code tun soll. Wenn also der Iframe in Ihrer Frontend-Ansicht angezeigt wird, funktioniert alles wie erwartet.
SunnyRed
0

Ich fand, dass die Verwendung des Fusion Editor-Plugins zum Erstellen meiner Seiten in Wordpress gut funktioniert.

Dieses Video zeigt, wie Sie Fusion Builder verwenden (fahren Sie mit Abschnitt 4:15 fort, um Container, Spalten, Elemente und Codeblöcke hinzuzufügen): https://www.youtube.com/watch?v=UDyNsnB_COA

Ich klicke, um einen Container hinzuzufügen, dann klicke ich auf Element hinzufügen und füge dann einen Codeblock anstelle eines Textblocks hinzu (ein Textblock entfernt einen Iframe, ein Codeblock jedoch nicht). In meinen Codeblock füge ich meinen Iframe-Code ein und veröffentliche ihn. Funktioniert hervorragend und ich muss keine PHP-Dateien ändern!

Brandon Barney
quelle
0

FAQs: Frage: Ist es sicher?

Antwort: JA, sie werden sorgfältig mit eindeutigen IP-Adressen durchgeführt und Ankertexte werden nur auf der Karte mit Geotags, der GMB-Seite und dem Youtube-Video mit Geotags und NICHT auf der Geldseite verlinkt. so sind sie sicher.

MUSTERBERICHT:

Klicken Sie hier - https://docs.google.com/spreadsheets/d/1cPBu62dwnFGXxRsNo3JY7oQN5Kdq3XWP65YjYB-LpSI

Wir verwenden http://www.indexification.com/ , um die Links abzugrenzen und zu indizieren, um zu überprüfen, ob der Link indiziert ist

Verwenden Sie dieses Massenprüfungs-Index-Tool, um zu überprüfen, ob https://indexchecking.com/ bereits ein Link indiziert wurde. Anweisungen zur Verwendung finden Sie auf dem Screenshot. https://snipboard.io/52azpW.jpg DFY Iframe Stacking

SEO Magier
quelle