इसलिए यह प्रश्न कई बार विभिन्न झंडों के नीचे उठाया गया है, हालाँकि मैं इस मुद्दे के एक अंतिम समाधान के लिए एक एकीकृत धागा प्रस्तुत करना चाहता हूँ।
वर्डप्रेस में, डिफ़ॉल्ट रूप से, जब TinyMCE में HTML और विज़ुअल संपादकों के बीच आगे-पीछे स्विच किया जाता है, तो कुछ टैग्स को सामग्री से निकाल दिया जाता है, और अन्य अजीब कार्यक्षमता होती है। अधिक कुशल HTML कोड लिखने के लिए दो ज्ञात वर्कअराउंड wp_auto_p फ़ंक्शन को फ़िल्टर का उपयोग करके हटाने और TinyMCE एडवांस को स्थापित करने और "स्टॉप रिमूवल पी एंड ब्रा टैग्स" विकल्प को सक्षम करने के लिए उपयोग कर रहे हैं।
यह केवल इतना अच्छा काम करता है, दुर्भाग्य से।
उदाहरण के लिए, निम्न उदाहरण लें:
<h2>How does it work?</h2>
<p>In order to use jQuery Easy Columns, you must install it as you would any other jQuery plugin. First, download the zip file using the button above. After downloading the file, extract it to a location of your choice, and move the extracted folder to your server using your favorite FTP client. After moving the plugin to your server (and of course calling the jQuery source into your document), call it in on your site using the following snippet of code:</p>
<pre>
<script type="text/javascript" src="/path/to/jquery.easycolumns.js"></script>
</pre>
यदि मैं इस कोड को HTML संपादक में टाइप करता हूं, जिसमें पहले से ही सक्षम ऊपर सूचीबद्ध दोनों विकल्प हैं, तो जब मैं दो अलग-अलग संपादकों के बीच स्विच करता हूं, तो कुछ भी नहीं होता है, जो अपेक्षित है। दुर्भाग्य से, बचत करते समय, कोड स्वचालित रूप से इस में परिवर्तित हो जाता है:
<h2>How does it work?</h2>
<p>In order to use jQuery Easy Columns, you must install it as you would any other jQuery plugin. First, download the zip file using the button above. After downloading the file, extract it to a location of your choice, and move the extracted folder to your server using your favorite FTP client. After moving the plugin to your server (and of course calling the jQuery source into your document), call it in on your site using the following snippet of code:</p>
<pre>
<script type="text/javascript" src="/path/to/jquery.easycolumns.js"></script>
</pre>
जैसा कि आप देख सकते हैं, पूर्व टैग के अंदर की सभी इकाइयाँ वास्तविक HTML वर्णों में परिवर्तित हो जाती हैं। फिर, अगर मैं फिर से उसी पोस्ट को सहेजता हूं, तो मुझे निम्न जैसा कुछ मिलता है:
<h2>How does it work?</h2>
<p>In order to use jQuery Easy Columns, you must install it as you would any other jQuery plugin. First, download the zip file using the button above. After downloading the file, extract it to a location of your choice, and move the extracted folder to your server using your favorite FTP client. After moving the plugin to your server (and of course calling the jQuery source into your document), call it in on your site using the following snippet of code:</p>
<pre><br />
<script type="text/javascript" src="/path/to/jquery.easycolumns.js"></script><br />
</pre>
ध्यान दें कि Wordpress वास्तव में पोस्ट में br टैग्स को इंजेक्ट करेगा। कहने की जरूरत नहीं है, जब इस पोस्ट को कुछ बार अपडेट किया गया है, जब इसे फ्रंटेंड पर देखा गया है, तो डिस्प्ले कहीं भी डिस्प्ले के पास नहीं है।
मुझे लगता है कि सभी जोड़ा "स्वरूपण कार्यक्षमता" से छुटकारा पाने का एकमात्र तरीका दृश्य संपादक को मेरी प्रोफ़ाइल के माध्यम से अक्षम करना है।
मेरे लिए यह एक अच्छा समाधान है, मैं एक पेशेवर वेब डेवलपर हूं। मेरे ग्राहकों के लिए, यह समाधान सुरुचिपूर्ण से दूर है। मेरे ग्राहक, अधिकांश भाग के लिए, दृश्य संपादक का उपयोग करेंगे। मेरे बहुत से क्लाइंट बहुत ही तकनीक के जानकार नहीं हैं, और कभी-कभी लेआउट के टूटने पर मुझे उनके पोस्ट को ठीक करने की आवश्यकता होती है। यह मुझे दृश्य संपादक का उपयोग करने के लिए सीमित करता है, क्योंकि मैं लेआउट को तोड़ने के डर के बिना HTML संपादक में नहीं बदल सकता।
मुख्य रूप से, (और मुझे लगता है कि एक बड़ा समुदाय है जो इस उत्तर से लाभान्वित हो सकता है), निम्नलिखित को सुनिश्चित करने के लिए मैं कौन से स्पष्ट कदम उठा सकता हूं:
- दृश्य या HTML संपादक से कोई पोस्ट संपादित की जा सकती है।
- दो टैब के बीच स्विच करने पर किसी भी तरह से पोस्ट की सामग्री को संशोधित नहीं किया जाता है।
- HTML संपादक से किसी पोस्ट को सहेजते समय, कोई अतिरिक्त सामग्री नहीं जोड़ी जाती है।
- HTML संपादक से किसी पोस्ट को सहेजते समय, कोई भी इकाइयाँ परिवर्तित नहीं होती हैं।
- बोनस: HTML संपादक से किसी पोस्ट को सहेजते समय, कोई भी कोड (उदाहरण के लिए HTML) जो एक पूर्व टैग के अंदर लिपटा होता है और पहले से ही संस्थाओं में परिवर्तित नहीं होता है, स्वचालित रूप से संस्थाओं में परिवर्तित हो जाएगा।
अनिवार्य रूप से, यदि हम तृतीय पक्ष प्लगइन के उपयोग के माध्यम से टाइनीएमसीई में उपर्युक्त व्यवहार बना सकते हैं, तो हम टिनीएमसीई के उपयोग के माध्यम से झूठे स्वरूपण के बारे में अन्य सभी प्रश्नों को समाप्त कर सकते हैं। मुझे लगता है कि कई लोग इससे लाभान्वित हो सकते हैं।
यह सिर्फ तर्कसंगत लगता है कि WYSIWIG संपादक से एक निश्चित कार्यक्षमता की अपेक्षा की जाती है, और यह इसके खिलाफ जाता है। सभी तर्क और कारण के अनुसार, स्वरूपण कार्यों में निर्मित वर्डप्रेस अपने वर्तमान सेटअप के साथ बहुत बेकार हैं। यह मुझे लगता है कि अगर वे इन प्रारूपण विकल्पों का उपयोग करना चाहते हैं, तो उनका सबसे अच्छा दांव एक संपादक या दूसरे को सक्षम करना होगा, दोनों को नहीं।
और कृपया: समस्या का समाधान और अन्य WYSIWIG संपादकों के डाउनलोड के साथ इस धागे का जवाब न दें जो समस्या को 'ठीक' करते हैं। यह वर्डप्रेस कोर के साथ एक अंतर्निहित समस्या है (हालांकि वास्तव में एक बग नहीं है) जिसे ठीक करने की आवश्यकता है।
संपादित करें : ठीक है, मैं इस पर काम कर रहा हूं और मैं सोच रहा हूं कि रिवर्स इंजीनियरिंग इस मुद्दे को हल करने का सबसे अच्छा तरीका होगा। तो अभी के लिए, मैंने wpautop को अक्षम कर दिया है (जो सिर्फ स्पष्टता के लिए एक फ़ंक्शन है जो पाठ प्रदर्शित होने से पहले p और br टैग जोड़ने के लिए "the_content" फिल्टर में हुक करता है , न कि जब पाठ सहेजा जाता है। मुझे लगता है कि कुछ भ्रम मौजूद है। जैसा कि यह फ़ंक्शन संचालित करता है। संपादक टैब के बीच स्विच करने पर आपके द्वारा होने वाले परिवर्तनों के लिए wpautop जिम्मेदार नहीं है। यह पूरी तरह से अलग है।
वैसे भी, मैंने wpautop को अक्षम कर दिया है, जैसा कि आप HTML संपादक का उपयोग करते समय अच्छा अभ्यास करते हैं। उस बिंदु से, मैंने विज़ुअल एडिटर को पहले HTML इकाई त्रुटियों के साथ शुरू करने के लिए अक्षम कर दिया है जो किसी पोस्ट को सहेजते समय मौजूद हैं। एक सी। बावोटा की मदद के लिए, मुझे साइट के सामने के छोर पर प्रदर्शित करने से पहले HTML संपादक में किसी भी टैग को उनके समकक्ष संस्थाओं में बदलने के लिए एक स्निपेट मिला (क्रेडिट: http://bavotasan.com/2012/convert -पर-टैग-सामग्री-से-HTML- संस्थाओं-में-वर्डप्रेस / )।
#add_filter( 'the_content', 'pre_content_filter', 0 );
/**
* Converts pre tag contents to HTML entities
*
* This function is attached to the 'the_content' filter hook.
*
* @author c.bavota
*/
function pre_content_filter( $content ) {
return preg_replace_callback( '|<pre.*>(.*)</pre|isU' , 'convert_pre_entities', $content );
}
function convert_pre_entities( $matches ) {
return str_replace( $matches[1], htmlentities($matches[1] ), $matches[0] );
}
add_filter( 'the_content', 'pre_content_filter', 10, 2 );
यह प्रभावी रूप से वर्डप्रेस के साथ मुद्दों को समाप्त करता है, इसे बचाने के लिए सभी संस्थाओं को टैग में सहेजकर टैग में बदल देता है। अब, आप HTML एडिटर का उपयोग कर सकते हैं, और अपने आप को इकाई रूपांतरण किए बिना "पूर्व" टैग के बीच मानक कोड लिख सकते हैं। यह वर्डप्रेस में इकाई रूपांतरण के साथ सभी मुद्दों का ख्याल रखता है, और सुनिश्चित करता है कि सामने के छोर पर सब कुछ सही ढंग से प्रदर्शित होता है। अब, हमें यह पता लगाने की आवश्यकता है कि टैब के बीच आगे और पीछे क्लिक करने पर अनुभव किए गए व्यवहार को संशोधित करने के लिए क्या हुक करना है। अभी, ऐसा प्रतीत होता है कि HTML से विज़ुअल टैब में जाने पर, HTML टैब की सामग्री की व्याख्या जावास्क्रिप्ट या किसी ऐसी चीज़ से की जाती है, जो सामग्री की तरह दिखना चाहिए। यह टैग (जो HTML टैब में गैर इकाई रूप में प्रदर्शित होते हैं) को प्रदर्शित होने के बजाय संसाधित किया जाता है। फिर, जब HTML टैब पर वापस जाते हैं, तो यह दिखाई देगा कि TinyMCE वर्तमान डेटा को पास करता है। इसका मतलब है कि जब आप वापस स्विच करते हैं, तो आप अपनी HTML संरचना खो देते हैं। हमें विंडो में लोड करने से पहले टिनीएमसीई को पूर्व टैग में सब कुछ बदलने के लिए इसे समान संस्थाओं के रूप में बताने का एक तरीका जानने की आवश्यकता है (अनिवार्य रूप से हमने फ्रंटएंड पर जो कुछ किया था उसका बैकएंड संस्करण लेकिन php और हुक के बजाय टिनिम्स और जावास्क्रिप्ट के साथ), ताकि यह संसाधित के बजाय प्रदर्शित हो। सुझाव? इसे विंडो में लोड करने से पहले समतुल्य इकाइयाँ (अनिवार्य रूप से बैकएंड पर हमने जो भी किया था उसका बैकएंड संस्करण लेकिन php और हुक के बजाय टिनिम्स और जावास्क्रिप्ट के साथ), ताकि यह संसाधित के बजाय प्रदर्शित हो। सुझाव? इसे विंडो में लोड करने से पहले समतुल्य इकाइयाँ (अनिवार्य रूप से बैकएंड पर हमने जो भी किया था उसका बैकएंड संस्करण लेकिन php और हुक के बजाय टिनिम्स और जावास्क्रिप्ट के साथ), ताकि यह संसाधित के बजाय प्रदर्शित हो। सुझाव?
संपादित करें 2 :
कुछ और शोधों के बाद, प्री टैग में एंटिटीज को परिवर्तित करने पर जब वे प्रदर्शित होते हैं तो प्री टैग के भीतर सामग्री के लिए ठीक काम करता है, लेकिन कहते हैं कि मेरे पास एक ब्लॉग पोस्ट है जैसे कि एक लाइन।
"अगला, हमें अपनी HTML फ़ाइल में इस पंक्ति को जोड़ना होगा: <p> हैलो, वर्ल्ड! </ P>"
इस पंक्ति को देखते हुए, आप बता सकते हैं कि कोड को साइट पर प्रदर्शित किया जाना है, और पार्स नहीं किया गया है, हालांकि जब पोस्ट सहेजा जाता है, तो ये इकाइयां अगले पोस्ट एडिट लोड पर डिकोड हो जाती हैं, और प्रत्येक बाद में सहेजे जाने से बच जाते हैं कच्चे HTML टैग्स के रूप में, जिसके कारण उन्हें फ्रंट एंड पर पार्स किया जाता है। एकमात्र उपाय जो मैं अब तक सोच सकता हूं कि "कोड" टैग के लिए समान कोड में लिखना होगा जैसा कि मैं पूर्व के लिए उपयोग कर रहा हूं, और फिर बस "कोड" टैग में छोटे एक लाइनर लपेटें, और में बड़े टुकड़े "प्री" टैग। किसी के पास कोई अन्य विचार है?