สิ่งที่ต้องคำนึงถึงในขณะที่สร้างปลั๊กอิน WordPress ตั้งแต่เริ่มต้น

เผยแพร่แล้ว: 2022-01-02

ปลั๊กอิน WordPress เป็นไฟล์เดียวหรือกลุ่มของไฟล์ที่ขยายหรือปรับปรุงฟังก์ชันการทำงานของไซต์ WordPress

นักพัฒนาใหม่ทุกคนรู้จัก “วิธีการเขียนโค้ด” แต่เมื่อสร้างปลั๊กอินใน WordPress นักพัฒนาต้องจำข้อกำหนดพื้นฐานบางประการในการสร้างปลั๊กอิน WordPress นอกเหนือจากคุณภาพโค้ด ความปลอดภัย และฟังก์ชันการทำงาน

คู่มือนี้อธิบายขั้นตอนสำคัญที่ต้องคำนึงถึงเมื่อสร้างปลั๊กอิน WordPress ตั้งแต่เริ่มต้น

ในปลั๊กอิน WordPress สิ่งสำคัญที่ต้องทำความเข้าใจคือ WordPress Hooks เช่น การดำเนินการและตัวกรอง Hooks อนุญาตให้ปลั๊กอินทำงานด้วยฟังก์ชันที่กำหนดไว้ในเวลาที่กำหนดภายในฟังก์ชัน WordPress

รายการขอดำเนินการ : https://codex.wordpress.org/Plugin_API/Action_Reference

 กำหนด ('WP_DEBUG', จริง);
--- เพิ่มตัวเลือก WP_DEBUG ใน WordPress เวอร์ชัน 2.3.1 แล้ว
--- โดยค่าเริ่มต้น จะถือว่ามันเป็นเท็จ อย่างไรก็ตาม โดยปกติจะถูกตั้งค่าเป็น true ในไฟล์ wp-config.php

-> เพิ่มส่วนหัวข้อมูลเฉพาะของปลั๊กอินไปยังไฟล์ที่สร้างขึ้นใหม่ของเราในโฟลเดอร์ปลั๊กอิน

 /*
ชื่อปลั๊กอิน: ข้อความรับรองประเภท
URI ของปลั๊กอิน: https://wordpress.org/plugins/testimonial-post-type/
คำอธิบาย: สร้างประเภทข้อความรับรอง มันเป็นอนุกรมวิธานและแท็ก
เวอร์ชัน: 1.0
ผู้เขียน: Elsner Technologies Pvt. บจก.
URI ผู้แต่ง: https://www.elsner.com
โดเมนข้อความ: ข้อความรับรองโพสต์ประเภท
เส้นทางโดเมน: /languages
*/

ที่เกี่ยวข้อง : ปลั๊กอิน WordPress ที่เพิ่งเปิดตัวล่าสุดของ Elsner: Posts Slider Shortcode

-> ปลั๊กอินทั้งหมดต้องมีชื่อฟังก์ชัน การกำหนด และชื่อคลาสที่ไม่ซ้ำกัน

ซึ่งจะป้องกันไม่ให้ปลั๊กอินของคุณขัดแย้งกับปลั๊กอินหรือธีมอื่นๆ

-> อย่าใช้ __ (ขีดล่างคู่) wp_ หรือ _ (ขีดล่างเดียว) เป็นคำนำหน้า

สิ่งเหล่านี้สงวนไว้สำหรับ WordPress เอง คุณสามารถใช้มันในชั้นเรียนของคุณ แต่ไม่ใช่เป็นฟังก์ชันแบบสแตนด์อโลน

-> โปรดรักษาความปลอดภัยปลั๊กอินของคุณจากการเข้าถึงไฟล์โดยตรง

 ถ้า ( ! กำหนด ( 'ABSPATH' ) ) ออก; // ออกหากเข้าถึงได้โดยตรง

— คุณสามารถหลีกเลี่ยงการเข้าถึงไฟล์โดยตรงโดยวางโค้ดนี้ไว้ที่ด้านบนสุดของไฟล์ php ทั้งหมด:

-> โปรดเพิ่ม nonce ในการเรียก POST ของคุณเพื่อป้องกันการเข้าถึงโดยไม่ได้รับอนุญาต

nonce (จำนวนที่ใช้ครั้งเดียว)

WordPress nonce ไม่ใช่ตัวเลข แต่เป็นแฮชที่ประกอบด้วยตัวเลขและตัวอักษร ไม่ได้ใช้เพียงครั้งเดียว แต่มี "อายุการใช้งาน" ที่ จำกัด หลังจากที่หมดอายุ

โดยปกติเราจะสร้าง url แบบนี้เพื่อลบ post_id 174
http://example.com/wp-admin/post.php?post=123&action=trash

URL นี้สมบูรณ์แบบ แต่ไม่ปลอดภัย สมมติว่าผู้โจมตีรู้รหัสของโพสต์ จากนั้นผู้โจมตีสามารถลบโพสต์ด้วย URL นี้โดยที่คุณไม่รู้ตัว

การเพิ่ม nonce จะป้องกันสิ่งนี้ ตัวอย่างเช่น เมื่อใช้ nonce URL ที่ WordPress สร้างสำหรับผู้ใช้จะมีลักษณะดังนี้:
http://example.com/wp-admin/post.php?post=123&action=trash&_wpnonce=b192fc4204

 $nonce = wp_create_nonce( 'my-action_trash' );

— นี่เพียงส่งกลับค่า nonce เอง

— ค่านี้คุณสามารถใส่ใน URL like

action='http://example.com/wp-admin/post.php?post=123&action=trash&_wpnonce='.$nonce;

— ตรวจสอบ nonce ที่ส่งผ่านใน URL

 wp_verify_nonce( $_REQUEST['_wpnonce'], 'my-action_trash' );

ที่เกี่ยวข้อง: วิธีการส่งปลั๊กอินของคุณไปยังไดเรกทอรีปลั๊กอิน WordPress?

-> โปรดฆ่าเชื้อ หลบหนี และตรวจสอบการโทร POST ของคุณ

ฆ่าเชื้อ : ทำความสะอาดอินพุตของผู้ใช้
เราต้องไม่ใส่ข้อมูลดิบลงในฐานข้อมูล แม้แต่โดยฟังก์ชันการอัพเดทหรือการเรียก prepare()

การล้างข้อมูล POST ของคุณเมื่อใช้เพื่อเรียกการดำเนินการ หรือการเปลี่ยนเส้นทาง URL จะช่วยลดโอกาสที่อาจเกิดช่องโหว่ XSS

Sanitize_text_field($_POST['post_name']);
— ข้อมูลสามารถฆ่าเชื้อได้โดยใช้ฟังก์ชันข้างต้น
— เบื้องหลัง ฟังก์ชันนี้ทำหน้าที่ดังต่อไปนี้:
ตรวจสอบ UTF-8 . ที่ไม่ถูกต้อง
แปลงอักขระ < ตัวเดียวเป็นเอนทิตี
แถบแท็กทั้งหมด
ลบการขึ้นบรรทัดใหม่ แท็บ และพื้นที่สีขาวเพิ่มเติม
สตริปออคเต็ต
— Sanitize_*() คลาสของฟังก์ชั่นตัวช่วย
https://developer.wordpress.org/plugins/security/securing-input/

ตรวจสอบ : กำลังตรวจสอบการป้อนข้อมูลของผู้ใช้
นอกจากการฆ่าเชื้อแล้ว คุณควรตรวจสอบการโทรทั้งหมดของคุณ หากการโทร $_POST ควรเป็นตัวเลขเท่านั้น ให้ตรวจสอบว่าเป็น int() ก่อนที่คุณจะส่งต่อผ่านสิ่งใดๆ ทุกครั้งที่คุณเพิ่มข้อมูลลงในฐานข้อมูล ข้อมูลนั้นควรเป็นข้อมูลที่ถูกต้อง

 intval( $_POST['โพสต์'] );
--- ถ้า $_POST['โพสต์']

มีค่าตัวเลขก็จะคืนค่าเป็นจริง ถ้าไม่จริงก็เท็จ

Escape : การรักษาความปลอดภัยเอาต์พุต
การหลบหนีคือการนำข้อมูลที่คุณมีอยู่แล้วและรักษาความปลอดภัยก่อนที่จะแสดงผลให้กับผู้ใช้ปลายทาง

การหลบหนี/การส่งสัญญาณออกจะช่วยขจัดความคลุมเครือและเพิ่มความชัดเจน

 <h4> <?php echo esc_html( $title ); ?> </h4>
--- esc_html()

ควรใช้ในบางครั้งที่องค์ประกอบ HTML ล้อมรอบส่วนของข้อมูลที่มีเอาต์พุตที่เรามี

 esc_html ( สตริง $text )

การหลบหนีสำหรับบล็อก HTML

 esc_html_e ( สตริง $text )

แสดงข้อความที่แปลแล้วซึ่งใช้ Escape เพื่อความปลอดภัยในเอาต์พุต HTML

 esc_html__ ( สตริง $text )

ดึงคำแปลของ $text และหลบหนีเพื่อการใช้งานอย่างปลอดภัยในเอาต์พุต HTML

 <img alt="" src="<?php echo esc_url( $picture_url ); ?>
--- esc_url()

ควรใช้ในแต่ละ URL รวมถึงในแอตทริบิวต์ 'src' และ 'href' ขององค์ประกอบ HTML

 <?php echo esc_js( $value ); ?>
--- esc_js()

มีไว้สำหรับ Javascript แบบอินไลน์

 <ul class="<?php echo esc_attr( $stored_class ); ?>">
--- esc_attr()

สามารถใช้ได้กับทุกอย่างที่พิมพ์เป็นแอตทริบิวต์ขององค์ประกอบ HTML

บันทึก :-
โปรดตรวจสอบลิงก์ด้านล่างเพื่อทำความเข้าใจว่าโฟลเดอร์เหล่านี้อยู่ที่ไหนและควรเรียกอย่างไรดีที่สุด
https://codex.wordpress.org/Determining_Plugin_and_Content_Directories

ถ้าเป็นไปได้ บันทึกข้อมูลลงในตาราง wp_options

เป้าหมายสุดท้ายของทั้งหมดนี้คือการรับรองว่าข้อมูลที่ไม่ถูกต้องและไม่ปลอดภัยจะไม่ถูกประมวลผลหรือแสดงเลย ทำความสะอาด ตรวจสอบ หนีทุกอย่าง นอกจากนี้อย่าเชื่อในผู้ใช้ในการป้อนข้อมูลที่มีเหตุผลเสมอ

ที่เกี่ยวข้อง: วิธีปรับแต่งหน้าเข้าสู่ระบบ WordPress