वर्डप्रेस WYSIWYG बनाओ iframe की पट्टी न करें


16

मेरे पास एक ब्लॉग है जिसे मुझे अक्सर विभिन्न कारणों के लिए पदों में iframes सम्मिलित करने की आवश्यकता होती है (यह मत पूछें कि मुझ पर विश्वास क्यों करें!)

जब मैं अपनी पोस्ट को संपादित करने के लिए "विज़ुअल" दृश्य का उपयोग करता हूं तो WYSIWYG लगातार मेरे iframes को स्ट्रिप्स करता है ...

मुझे पता है कि अगर मैं "html" दृश्य का उपयोग करता हूं और "html" दृश्य से केवल दृश्य / सहेजता हूं तो मैं पोस्ट में iframes रख सकता हूं ... हालांकि मैं वास्तव में अपने पोस्ट को संपादित करने के लिए सामान्य WYSIWYG का उपयोग करने में सक्षम होना चाहता हूं "html" दृश्य का सहारा लिए बिना

क्या इस व्यवहार को अक्षम करने के लिए मैं कुछ भी कर सकता हूं? मैंने इस पोस्ट को देखा है , जो संपादन का सुझाव देता है wp-includes/js/tinymce/tiny_mce_config.php, लेकिन मैं वास्तव में ऐसा कुछ करने से बचूंगा जो संभवतः एक उन्नयन में टूट जाएगा!


आप जिस पोस्ट से जुड़े हैं, उसमें ओटो द्वारा गैर-एडिट फ़िल्टर सॉल्यूशन है। क्या आपने कोशिश की थी?
रार्स्ट

थोड़ा और स्पष्ट करने के लिए, मुझे ऐसा करने के लिए कुछ PHP को हैक करने की आवश्यकता नहीं है (मैं संभवतः इसके बारे में भूल सकता हूं, उन्नयन और सामान को तोड़ दूंगा) ... अगर यह एक सेटिंग बात है (भले ही वह PHP में है) या कुछ मैं कह सकता हूँ, मेरे iframe के चारों ओर कोड का एक सा लपेटकर जो भी काम करेगा। इस बिंदु पर मैं यह करने के लिए कुछ जावास्क्रिप्ट का उपयोग करने जा रहा हूँ, लेकिन यह गन्दा लगता है।
जस्टिन जेनकिंस

1
इसके लिए कोई कॉन्फ़िगरेशन विकल्प नहीं है, और संपादक में इसके चारों ओर कोड करने का कोई तरीका नहीं है (यह एक सुरक्षा छेद होगा यदि वर्कअराउंड मौजूद है)। उल्लिखित कोड को एक प्लगइन में डालना ऐसा करने का सबसे अच्छा तरीका है, और यह अपग्रेड से भी बचेगा (जब आप अपग्रेड करते हैं तो प्लगइन्स डिलीट नहीं होते)।
Jan Fabry

@ जान, उम्मीद है कि कोई ऐसा व्यक्ति है जिसे हम नहीं जानते हैं ... यदि नहीं, तो धन्यवाद। अजीब लगता है कि यह केवल दृश्य भाग पर एक छेद है, HTML नहीं? मैं समझता हूं कि दृश्य मोड में लोगों की नाक के नीचे चीजों को फिसलना आसान है ... लेकिन फिर भी।
जस्टिन जेनकिंस

iframesवीडियो एम्बेड करने के लिए उपयोगी हैं। <object>विधि, फ्लैश पर निर्भर करता है, जबकि <iframe>विधि है, जो सबसे वीडियो-शेयरिंग साइटों इन दिनों का समर्थन है, HTML5 वीडियो के लिए अनुमति देता है।
TRIG

जवाबों:


9

यदि आप अपना स्वयं का कोड नहीं लिखना चाहते हैं तो एक एम्बेड करने की अनुमति देने के लिए एक प्लगइन है <iframe>:

तो बस इस तरह शोर्ट का उपयोग करें:

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

@ ईथन सेफर्ट - अच्छा जवाब!
माइकस्किंकल

यह वास्तव में मेरे प्रश्न पर लागू होता है, कोई "हैकिंग" आवश्यक नहीं है। अभी भी HTML दृश्य का उपयोग करने की आवश्यकता है ... धन्यवाद।
जस्टिन जेनकिंस

इस उत्तर में प्लगइन अब अप-टू-डेट नहीं है, लेकिन यह इसके बजाय अच्छा दिखता है: wordpress.org/plugins/iframe
टिम मेलोन

23

आप TinyMCE के फ़िल्टर को कस्टमाइज़ कर सकते हैं, <iframe>TinyMCE के अंदर 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 में इसे जोड़ें। इसके अलावा आप मेरे पोस्ट में और अधिक informations पढ़ सकते हैं: http://wpengineer.com/1963/customize-wordpress-wysiwyg-editor/


@ बब्लूजी - अच्छा जवाब। मैं सिर्फ आपकी साइट पर पढ़ रहा था कि आज पहले बहुत पोस्ट। आप जानते हैं, TinyMCE के लिए वेब पर अधिकांश उदाहरण वर्डप्रेस के संदर्भ में नहीं हैं और वर्डप्रेस के संदर्भ में यह काफी जटिल है। आप इसे अच्छी तरह से समझते हैं। TinyMCE के बारे में और भी बहुत कुछ आप कर सकते हैं; क्या आपने इस पर ब्लॉग पोस्ट की एक श्रृंखला बनाने पर विचार किया है?
माइकस्किंकल

मेरी सबसे बड़ी समस्या समय है; लेकिन मेरे पास मेरे ड्राफ्ट में इस विषय पर एक और पोस्ट है और शायद मैं अगले हफ्तों में यह पोस्ट करूं। आपकी श्रद्धांजलि के लिए धन्यवाद।
bueltge

1

मुझे वर्डप्रेस 3.2.1 में अपग्रेड करना था और फिर एंबेड इफ्रेम स्थापित किया और यह बहुत अच्छा काम किया।

जब वर्डप्रेस में html से विजुअल में आगे और पीछे स्विच करते हैं तो iframe tages को हटाया नहीं गया था।


1

मल्टीसाइट वातावरण में सुपरडामिन के अलावा हर उपयोगकर्ता को 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

यदि आप शोर्ट-समाधान के लिए एक अतिरिक्त प्लगइन का उपयोग करना पसंद नहीं करते हैं, तो आप इन पंक्तियों के साथ कुछ जोड़ सकते हैं अपने विषय, प्लगइन या फ़ंक्शन के लिए। इसे हाथ से जोड़ने के लिए। यदि neccessary आपको कुंजियों-सरणी में कुछ और कुंजियाँ जोड़ने की आवश्यकता हो सकती है।

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 पोस्टिंग
अंकित अग्रवाल

मुझे नहीं पता कि आप कोड क्या करना चाहते हैं, लेकिन सामग्री में iframe पोस्ट करना जैसा कि आपने इसे लिखा है, वह यह है कि कोड क्या करना चाहिए। इसलिए, यदि iframe आपके दृश्य दृश्य में दिखाई देता है, तो सब कुछ अपेक्षित रूप से काम करता है।
सनीरेड

0

मैंने पाया कि Wordpress में मेरे पेज बनाने के लिए फ्यूजन एडिटर प्लगइन का उपयोग करना अच्छी तरह से काम करता है।

यह वीडियो दिखाता है कि फ्यूजन बिल्डर का उपयोग कैसे करें (कंटेनर, कोलॉम्न्स, तत्वों और कोड ब्लॉक को जोड़ने के लिए छोड़ें): https://www.youtube.com/watch?v=UDyNsnB_COA

मैं एक कंटेनर जोड़ने के लिए क्लिक करता हूं, फिर तत्व जोड़ें पर क्लिक करता हूं, और फिर टेक्स्ट ब्लॉक के बजाय एक कोड ब्लॉक जोड़ता हूं (टेक्स्ट ब्लॉक एक iframe हटा देगा, लेकिन एक कोड ब्लॉक नहीं होगा)। अपने कोड ब्लॉक में मैं अपना iframe कोड पेस्ट करता हूं और प्रकाशित करता हूं। महान काम करता है और मुझे किसी भी PHP फ़ाइलों को संशोधित करने की आवश्यकता नहीं है!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.