ดังนั้นคำถามนี้ได้รับการยกหลายครั้งภายใต้ธงที่แตกต่างกัน แต่ฉันต้องการที่จะนำเสนอหัวข้อแบบครบวงจรสำหรับการแก้ปัญหาที่ดีที่สุดสำหรับปัญหานี้
ใน WordPress โดยค่าเริ่มต้นเมื่อสลับไปมาระหว่างตัวแก้ไข HTML และ Visual ใน TinyMCE แท็กบางอย่างจะถูกดึงออกจากเนื้อหาและการทำงานแปลก ๆ อื่น ๆ เกิดขึ้น วิธีแก้ไขปัญหาที่ทราบสองประการสำหรับการเขียนโค้ด HTML ที่มีประสิทธิภาพยิ่งขึ้นคือการใช้ฟังก์ชั่น wp_auto_p โดยใช้ตัวกรองและติดตั้ง TinyMCE Advanced และเปิดใช้งานตัวเลือก "หยุดลบแท็ก & แท็ก"
มันใช้งานได้ดีเท่านั้นโชคไม่ดี
ยกตัวอย่างเช่นตัวอย่างต่อไปนี้:
<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 ได้โดยไม่ต้องกลัวว่าจะทำลายเค้าโครง
ส่วนใหญ่ (และฉันคิดว่ามีชุมชนขนาดใหญ่ที่สามารถได้รับประโยชน์จากคำตอบนี้) ฉันสามารถทำตามขั้นตอนใดบ้างเพื่อให้แน่ใจในสิ่งต่อไปนี้:
- โพสต์สามารถแก้ไขได้จากตัวแก้ไข Visual หรือ HTML
- เนื้อหาของโพสต์ไม่ได้รับการแก้ไข แต่อย่างใดเมื่อสลับระหว่างสองแท็บ
- เมื่อบันทึกโพสต์จากเครื่องมือแก้ไข HTML จะไม่มีการเพิ่มเนื้อหาใด ๆ
- เมื่อบันทึกโพสต์จากตัวแก้ไข HTML จะไม่มีการแปลงเอนทิตี
- โบนัส: เมื่อบันทึกโพสต์จากตัวแก้ไข HTML โค้ดใด ๆ (HTML เช่น) ที่อยู่ในแท็กพรีและไม่ได้ถูกแปลงเป็นเอนทิตีจะถูกแปลงเป็นเอนทิตีโดยอัตโนมัติ
โดยพื้นฐานแล้วถ้าเราสามารถสร้างพฤติกรรมดังกล่าวใน TinyMCE ผ่านการใช้ปลั๊กอินของบุคคลที่สามเราสามารถระงับคำถามอื่น ๆ ทั้งหมดที่เกี่ยวข้องกับการจัดรูปแบบเท็จผ่านการใช้ TinyMCE ฉันรู้สึกว่าหลายคนจะได้ประโยชน์จากสิ่งนี้
ดูเหมือนว่ามีเหตุผลว่ามีฟังก์ชั่นบางอย่างที่เราคาดหวังจากเครื่องมือแก้ไขแบบ WYSIWIG และสิ่งนี้ขัดกับมัน ตามเหตุผลและเหตุผลทั้งหมด Wordpress 'ฟังก์ชั่นการจัดรูปแบบที่สร้างขึ้นค่อนข้างไร้ประโยชน์กับการตั้งค่าปัจจุบันของพวกเขา สำหรับฉันดูเหมือนว่าหากพวกเขาต้องการใช้ตัวเลือกการจัดรูปแบบเหล่านี้ทางออกที่ดีที่สุดของพวกเขาคือการเปิดใช้งานตัวแก้ไขอย่างใดอย่างหนึ่งหรืออย่างอื่นไม่ใช่ทั้งสองอย่าง
และโปรดอย่าตอบกระทู้นี้ด้วยวิธีแก้ไขและดาวน์โหลดสำหรับเครื่องมือแก้ไข WYSIWIG อื่น ๆ ที่ 'แก้ไขปัญหา' นี่เป็นปัญหาพื้นฐาน (แม้ว่าจะไม่ใช่ข้อผิดพลาดอย่างแท้จริง) กับคอร์ Wordpress ที่ต้องได้รับการแก้ไข
แก้ไข : เอาล่ะฉันทำงานนี้และฉันคิดว่าวิศวกรรมย้อนกลับจะเป็นวิธีที่ดีที่สุดในการแก้ปัญหานี้ ดังนั้นในตอนนี้ฉันได้ปิดการใช้งาน wpautop (ซึ่งสำหรับความชัดเจนก็คือฟังก์ชั่นที่เชื่อมต่อตัวกรอง "the_content" เพื่อเพิ่มแท็ก p และ br ก่อนที่ข้อความจะปรากฏขึ้นไม่ใช่เมื่อบันทึกข้อความฉันคิดว่ามีความสับสนอยู่บ้าง ฟังก์ชั่นนี้ทำงานอย่างไร wpautop ไม่รับผิดชอบต่อการเปลี่ยนแปลงที่คุณเห็นเกิดขึ้นเมื่อคุณสลับไปมาระหว่างแท็บแก้ไข
อย่างไรก็ตามฉันได้ปิดการใช้งาน wpautop ตามแนวทางปฏิบัติที่ดีเมื่อคุณใช้โปรแกรมแก้ไข HTML จากจุดนั้นฉันปิดการใช้งานโปรแกรมแก้ไขภาพเพื่อเริ่มต้นครั้งแรกกับข้อผิดพลาดเอนทิตี html ที่มีอยู่เมื่อบันทึกโพสต์ ขอบคุณความช่วยเหลือของ C. Bavota หนึ่งตัวฉันพบข้อมูลโค้ดเพื่อแปลงแท็กใด ๆ ในตัวแก้ไข HTML เป็นเอนทิตีเทียบเท่าของพวกเขาก่อนที่จะแสดงในส่วนหน้าของเว็บไซต์ (เครดิต: http://bavotasan.com/2012/convert -pre-tag-content-to-html-entity-in-wordpress / )
#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 );
สิ่งนี้จะช่วยลดปัญหาเกี่ยวกับ Wordpress ที่แปลงเอนทิตีทั้งหมดเป็นแท็กเมื่อบันทึกโดยหลีกเลี่ยง ตอนนี้คุณสามารถใช้เครื่องมือแก้ไข HTML และเขียนรหัสมาตรฐานระหว่างแท็ก "pre" โดยไม่ต้องทำการแปลงเอนทิตีด้วยตัวเอง สิ่งนี้จะดูแลปัญหาทั้งหมดของการแปลงเอนทิตีใน Wordpress และทำให้แน่ใจว่าทุกอย่างแสดงอย่างถูกต้องที่ส่วนหน้า ตอนนี้เราต้องคิดให้ดีว่าจะต้องแก้ไขอะไรบ้างเมื่อคลิกไปมาระหว่างแท็บต่างๆ ตอนนี้ดูเหมือนว่าเมื่อย้ายจาก HTML ไปยังแท็บภาพเนื้อหาของแท็บ HTML จะถูกตีความโดย javascript หรือบางสิ่งบางอย่างเพื่อพยายามอัปเดตสดๆว่าเนื้อหาควรมีลักษณะอย่างไร สิ่งนี้ทำให้แท็ก (ซึ่งแสดงในรูปแบบที่ไม่ใช่เอนทิตีในแท็บ HTML) ให้ดำเนินการแทนการแสดง จากนั้น เมื่อเปลี่ยนกลับเป็นแท็บ HTML จะปรากฏว่า TinyMCE ส่งข้อมูลปัจจุบันไปพร้อมกัน ซึ่งหมายความว่าเมื่อคุณเปลี่ยนกลับคุณจะสูญเสียโครงสร้าง HTML ของคุณ เราจำเป็นต้องหาวิธีที่จะบอก TinyMCE ในการแปลงทุกอย่างในแท็กล่วงหน้าให้เป็นเอนทิตีที่เทียบเท่ากันก่อนที่จะโหลดมันเข้าไปในหน้าต่าง เพื่อให้มันแสดงแทนการประมวลผล ข้อเสนอแนะ? เอนทิตีที่เทียบเท่ากันก่อนที่จะโหลดลงในหน้าต่าง (โดยพื้นฐานแล้วเป็นแบ็กเอนด์เวอร์ชันที่เราทำในส่วนหน้า แต่ด้วย tinymce และ javascript แทนที่จะเป็น php และ hooks) ดังนั้นมันจึงถูกแสดงแทนการประมวลผล ข้อเสนอแนะ? เอนทิตีที่เทียบเท่ากันก่อนที่จะโหลดลงในหน้าต่าง (โดยพื้นฐานแล้วเป็นแบ็กเอนด์เวอร์ชันที่เราทำในส่วนหน้า แต่ด้วย tinymce และ javascript แทนที่จะเป็น php และ hooks) ดังนั้นมันจึงถูกแสดงแทนการประมวลผล ข้อเสนอแนะ?
แก้ไข 2 :
หลังจากการวิจัยเพิ่มเติมการแปลงเอนทิตีในแท็กล่วงหน้าเมื่อแสดงจะทำงานได้ดีสำหรับเนื้อหาภายในแท็กล่วงหน้า แต่บอกว่าฉันมีโพสต์บล็อกที่มีบรรทัดเช่นนี้:
"ถัดไปเราต้องเพิ่มบรรทัดนี้ในไฟล์ HTML ของเรา: <p> สวัสดีโลก! </p>"
เมื่อมองไปที่บรรทัดนี้คุณสามารถบอกได้ว่าโค้ดควรจะแสดงบนไซต์และไม่ถูกวิเคราะห์คำอย่างไรก็ตามเมื่อบันทึกโพสต์เอนทิตีเหล่านี้จะถูกถอดรหัสในการโหลดการแก้ไขโพสต์ถัดไปและบันทึกทุกครั้งภายหลัง เป็นแท็ก html ดิบซึ่งทำให้แท็กแยกวิเคราะห์ที่ส่วนหน้า ทางออกเดียวที่ฉันสามารถนึกได้ว่าจะเขียนโค้ดที่คล้ายกันสำหรับแท็ก "code" ที่ฉันใช้สำหรับ pre แล้วก็ใส่ liners ตัวเล็กในแท็ก "code" และ chunks ขนาดใหญ่ใน แท็ก "ก่อน" ใครมีความคิดเห็นอื่น ๆ บ้าง