วิธีที่ดีที่สุดในการอนุญาตปลั๊กอินสำหรับแอปพลิเคชัน PHP การแทรกโค้ด PHP ลงใน WordPress ผ่านวิดเจ็ต Retreat ปลั๊กอิน php

PHP เวอร์ชัน 7 เปิดตัวในปี 2558 ล่าสุด รอบใหม่ในการพัฒนาภาษาการเขียนโปรแกรมนี้นำมาซึ่งโอกาสมากมายสำหรับทุกคนที่ใช้ PHP ข้อดีของเวอร์ชันใหม่ควรเน้นความเร็ว ตามที่นักพัฒนาระบุว่าความเร็วของสคริปต์ใน PHP 7 เมื่อเทียบกับเวอร์ชันก่อนหน้านั้นเพิ่มขึ้นเกือบสองเท่า ในเรื่องนี้เจ้าของเว็บไซต์จำนวนมากที่ติดตั้ง PHP เวอร์ชันเก่าต้องการเปลี่ยนไปใช้เวอร์ชันใหม่

ทำไมต้องตรวจสอบความเข้ากันได้?

ควรสังเกตว่าก่อนที่จะเปลี่ยนเวอร์ชัน PHP เป็นเวอร์ชันที่ใหม่กว่าและเร็วกว่าในแผงควบคุมของโฮสติ้งของคุณ คุณต้องตรวจสอบความเข้ากันได้ของเว็บไซต์ WordPress ได้แก่ ธีมและปลั๊กอิน ความต้องการนี้เกิดขึ้นเนื่องจากโดยปกติแล้วในซอฟต์แวร์เวอร์ชันใหม่จะมีการเพิ่มฟังก์ชันบางอย่าง และฟังก์ชันบางอย่างก็หยุดทำงานไปเลย หากปลั๊กอินหรือธีมใช้ฟังก์ชันหรือวิธีการที่ไม่มีอยู่ในเวอร์ชันใหม่ แสดงว่านี่เป็นสัญญาณของข้อผิดพลาดซึ่งอาจรบกวนการทำงานของไซต์โดยรวมได้

จะตรวจสอบความเข้ากันได้กับ PHP 7.0 ได้อย่างไร? ปลั๊กอินตัวตรวจสอบความเข้ากันได้ของ PHP

ปลั๊กอินตัวตรวจสอบความเข้ากันได้ของ PHP ช่วยให้คุณสามารถสแกนเว็บไซต์ทั้งหมดและระบุว่าส่วนประกอบใด (ธีม, ปลั๊กอิน) ไม่สามารถทำงานร่วมกับ PHP เวอร์ชันที่เลือกได้ ก่อนอื่นคุณต้องติดตั้งและเปิดใช้งาน จากนั้นไปที่แผงผู้ดูแลระบบ เครื่องมือ -> ความเข้ากันได้ของ PHP

อย่างที่คุณเห็นปลั๊กอินมีการตั้งค่าที่ชัดเจนมาก ในการเริ่มต้นการตรวจสอบ คุณต้องเลือกเวอร์ชัน PHP ที่คุณต้องการตรวจสอบความเข้ากันได้ของเว็บไซต์ (บล็อกเวอร์ชัน PHP) ฟังก์ชั่นที่สะดวกของปลั๊กอินคือการเลือกสถานะของส่วนประกอบที่กำลังตรวจสอบ มีสองตัวเลือกให้เลือก: ตรวจสอบระหว่างธีมและปลั๊กอินที่ใช้งานอยู่ หรือตัวเลือกที่ไม่ได้ใช้งาน (ฟิลด์ ปลั๊กอิน / สถานะธีม) หากต้องการเริ่มการสแกน ให้คลิกปุ่มสแกนไซต์อีกครั้ง

สามารถดาวน์โหลดผลการทดสอบเป็นไฟล์ข้อความได้โดยคลิกปุ่มดาวน์โหลดรายงาน

ทุกคนที่คุ้นเคยกับ WordPress เคยได้ยินเกี่ยวกับไฟล์ธีม (เทมเพลต) ฟังก์ชั่น.php อย่างไรก็ตาม ไม่ใช่ทุกคนที่เข้าใจจุดประสงค์ของมันดีนัก โดยมองว่ามันเป็นไฟล์ที่เก็บฟังก์ชัน PHP ต่างๆ เท่านั้น บนอินเทอร์เน็ต เช่นเดียวกับบนเว็บไซต์ของฉัน มักแนะนำให้เพิ่มโค้ด PHP ลงในไฟล์นี้ อย่างไรก็ตาม ไม่ใช่ทุกโค้ดที่จะใช้ได้กับไฟล์นี้ ไม่ใช่เพราะมันใช้งานไม่ได้ แต่เพราะมันไม่เหมาะกับตรรกะในการใช้งาน

นอกจากนี้เมื่อแก้ไขฟังก์ชั่น php ผู้เริ่มต้นทำผิดพลาดเนื่องจากไซต์หยุดทำงาน

ในบทความนี้ฉันจะพยายามพิจารณาประเด็นเหล่านี้ทั้งหมด: เมื่อใดที่ควรใช้ Functions.php และเมื่อใดที่ไม่ควรทำเช่นนี้ข้อผิดพลาดที่อาจเกิดขึ้นเมื่อแก้ไข Functions.php

คุณสมบัติฟังก์ชั่น.php

ฟังก์ชั่น.php อยู่ในโฟลเดอร์ธีมและโหลดทุกครั้ง ในขณะที่ดูส่วนภายนอกของไซต์ ในแผงผู้ดูแลระบบ และแม้แต่ในระหว่างการร้องขอ AJAX ไม่มีกรณีที่ไม่รวมฟังก์ชันต่างๆ php ไว้ และนี่เป็นการเปิดโอกาสมากมายสำหรับนักพัฒนา

ตัวอย่างเช่น โค้ดต่อไปนี้ที่แทรกลงในไฟล์ Functions.php ของธีมจะขยายความสามารถของธีมโดยเปิดใช้งานการรองรับภาพขนาดย่อของโพสต์:

Add_action("after_setup_theme", "wp_kama_theme_setup"); ฟังก์ชั่น wp_kama_theme_setup())( // รองรับภาพขนาดย่อ add_theme_support("post-thumbnails"); )

อีกตัวอย่างหนึ่ง โค้ดจะแทนที่ข้อความในส่วนท้ายของแผงผู้ดูแลระบบ WordPress ด้วยข้อมูลเกี่ยวกับจำนวนคำขอฐานข้อมูล เวลาในการสร้างเพจ และการใช้หน่วยความจำ:

## ข้อมูลเกี่ยวกับจำนวนคำขอไปยังฐานข้อมูลในแผงผู้ดูแลระบบ add_filter("admin_footer_text", "wp_usage"); // ในแผงผู้ดูแลระบบ add_filter("wp_footer", "wp_usage"); // บนฟังก์ชันเว็บไซต์ wp_usage())( echo sprintf(__("SQL: %d in %s sec. %s MB", "km"), get_num_queries(), timer_stop(0, 3), round(memory_get_peak_usage () /1024/1024, 2)); )

ฟังก์ชั่น.php กับปลั๊กอิน

- “ ปลั๊กอินทำงานช้ากว่าโค้ดในไฟล์ function.php” ผู้โง่เขลาพูด - ไม่เป็นเช่นนั้น!

ตามทฤษฎีแล้ว การแทรกโค้ดลงใน Functions.php นั้นเหมือนกับการติดตั้งปลั๊กอิน แต่ก็ไม่เหมือนกัน ท้ายที่สุดแล้ว เมื่อเราเปลี่ยนธีม เราจะได้ Functions.php ที่แตกต่างไปจากเดิมอย่างสิ้นเชิง และการเปลี่ยนแปลงทั้งหมดที่ทำจะหายไป แต่ปลั๊กอินจะยังคงอยู่ไม่ว่าธีมจะเปลี่ยนไปมากน้อยเพียงใด ด้วยเหตุผลเหล่านี้ เราจึงต้องอ้างอิงถึงไฟล์ function.php หากฟังก์ชันที่เพิ่มเข้ามาไม่เพียงเกี่ยวข้องกับธีมเท่านั้น แต่ยังรวมถึงไซต์โดยรวมด้วย คุณควรคิดถึงการเชื่อมต่อเป็นปลั๊กอิน

ตัวอย่างที่สองด้านบนคือ “ข้อมูลเกี่ยวกับจำนวนการสืบค้นไปยังฐานข้อมูลในส่วนท้ายของแผงผู้ดูแลระบบ” ตามหลักเหตุผลแล้ว มันไม่เหมาะสำหรับใช้ในไฟล์ function.php เพราะหากเราเปลี่ยนเทมเพลต เราจะสูญเสียฟังก์ชันนี้ไป แต่จะใช้ในแผงผู้ดูแลระบบและจำเป็นไม่ว่าจะใช้ธีมใดก็ตาม

เรามาลบมันออกจาก function.php และทำให้เป็นปลั๊กอินกันดีกว่า ง่ายมาก!

หากต้องการสร้างปลั๊กอิน คุณต้องสร้างไฟล์ด้วยโค้ดด้านล่าง (ชื่อไฟล์อาจเป็นอะไรก็ได้) เพิ่มลงในไดเร็กทอรีปลั๊กอิน wp-content/plugins/ และเปิดใช้งานปลั๊กอินในแผงผู้ดูแลระบบ:

. โดยทั่วไป หากโค้ดที่คุณกำลังแทรกมีแท็กเหล่านี้ที่จุดเริ่มต้นและสิ้นสุด จะต้องลบแท็กเหล่านั้นออก นอกจากนี้ ไฟล์ Functions.php ไม่ควรแสดงข้อความใดๆ (โค้ด HTML หรือเนื้อหาอื่นๆ) บนหน้าจอ อนุญาตให้ใช้เอาต์พุตข้อความภายในฟังก์ชันที่จะใช้ในเทมเพลตในภายหลังหรือแนบกับ hooks เท่านั้น (ดูรายละเอียดเพิ่มเติมด้านล่าง)

คุณไม่สามารถอนุญาตให้มีอักขระใดๆ ก่อนหน้า รวมถึงอักขระที่มองไม่เห็น (ตัวแบ่งบรรทัด) เนื่องจาก Functions.php เชื่อมต่อกันก่อนที่จะตั้งค่าส่วนหัว http (ส่วนหัวดังกล่าวสื่อถึงข้อมูลต่างๆ เช่น นี่เป็นเอกสาร html การเข้ารหัส utf-8 นั้นแตกต่างออกไป ). ตามกฎของ PHP เนื้อหาควรแสดงบนหน้าจอหลังจากส่งส่วนหัวแล้ว และทุกสิ่งภายนอกคือเนื้อหา - ข้อความที่แสดงบนหน้าจอ แม้แต่อักขระ \n ที่มองไม่เห็น ดังนั้น ข้อความนี้ทำให้เกิดข้อผิดพลาด

เพื่อหลีกเลี่ยงข้อผิดพลาด ให้พิจารณา 4 ประเด็น: #1 การทำรังที่ถูกต้อง

ตัวอย่างเช่น เรามีโครงสร้างนี้:

.......นี่คือรหัส......... ?>

ถูกต้องดังนี้:

#2 ไม่มีการขึ้นบรรทัด ช่องว่าง ข้อความก่อนหน้า

รหัสนี้จะทำให้เกิดข้อผิดพลาด:

แต่อันนี้ไม่ได้:

การเขียนแบบนี้มีเหตุผลมากกว่า:

มันเกิดขึ้นที่มีการวางตัวแบ่งบรรทัดที่ส่วนท้ายสุดของ function.php และจากนั้นสิ่งนี้จะกลายเป็นปัญหาที่แท้จริงเพราะดูเหมือนว่าทุกอย่างจะถูกต้อง แต่ไซต์ใช้งานไม่ได้ จริงๆ แล้ว after?> หรือก่อนหน้านั้นจะมีบรรทัดว่าง

ด้วยเหตุนี้ นักพัฒนาจำนวนมากจึงลบแท็กปิด ?> ออกทั้งหมด ซึ่งเป็นที่ยอมรับใน PHP ฉันแนะนำให้ทำสิ่งนี้เสมอ:

ภายในฟังก์ชัน PHP

หากมีฟังก์ชันใน function.php ก็สามารถใช้แท็กภายในฟังก์ชันนี้ได้ ตัวอย่างเช่น เพื่อเน้นโค้ด HTML ภายในฟังก์ชันด้วยสายตา:

นี่คือโค้ด html

ความจริงก็คือในกรณีนี้ฟังก์ชันจะลงทะเบียนเท่านั้นและไม่ได้ดำเนินการใดๆ ทุกอย่างภายในฟังก์ชัน (ระหว่าง ( )) จะไม่ทำงานจนกว่าจะเรียกใช้ฟังก์ชันนี้ และฟังก์ชันดังกล่าวมักถูกเรียกจากเทมเพลตหรือผ่านตัวกรอง หลังจากที่ส่งส่วนหัว HTTP แล้ว ดังนั้นในตัวอย่างนี้ เราสามารถละเว้นการขึ้นบรรทัดใหม่และใช้ ?> และ