คุณไม่เห็นเหรอว่าบางอย่าง ปลั๊กอิน WordPress โชคดีไหม WooCommerce, ง่ายหลักดาวน์โหลด, ฟอร์มแรงโน้มถ่วง : ปลั๊กอินเหล่านี้แต่ละตัวขับเคลื่อนโดย บริษัท ทั้งหมดโดยมีส่วนขยายของบุคคลที่สามจำนวนมากและคุณสมบัติอื่น ๆ ที่เพิ่มเข้ามาซึ่งเพิ่มศักยภาพของปลั๊กอิน ในช่วงเวลานี้ปลั๊กอินอื่น ๆ ส่วนใหญ่ไม่สามารถดำเนินการได้

ปลั๊กอินตัวเดียวจะกลายเป็นพื้นฐานของระบบนิเวศทางเทคโนโลยีที่เฟื่องฟูได้อย่างไร? มีคำตอบมากมาย: การเป็นคนแรกในการทำตลาดการสร้างผลิตภัณฑ์ที่ยอดเยี่ยมความเข้าใจด้านการตลาดและทุกสิ่งที่อยู่ระหว่างนั้น แต่วันนี้เราจะมุ่งเน้นไปที่ส่วนสำคัญของคำตอบทางเทคนิคคือ: การขยายตัวผ่านระบบตะขอของ WordPress

วันนี้เราจะใช้ตัวอย่างของ WordPress ปลั๊กอิน เพื่อครอบคลุมสองฟังก์ชันหลักที่มอบสถานะการขยายให้กับปลั๊กอิน ได้แก่: apply_filters() และ do_action()

ส่วนขยาย: ส่วนขยายสำหรับปลั๊กอิน

ดังนั้นจึงเป็นที่ชัดเจนว่าเมื่อเราพูดถึง "ส่วนขยาย" เรากำลังอ้างถึงปลั๊กอินที่สร้างขึ้นเพื่อผู้อื่น ลองดูตัวอย่าง: " ลายสำหรับ WooCommerce '

ส่วนขยายนี้ไม่ทำอะไรเลยหากคุณยังไม่ได้ทำ WooCommerce. หากคุณติดตั้ง WooCommerceแล้วซื้อและติดตั้ง " ลายสำหรับ WooCommerce ในฐานะที่เป็นปลั๊กอินแยกต่างหากและมันจะขยายการทำงานของ WooCommerce เพื่อให้คุณสามารถเริ่มรับชำระเงินผ่านเกตเวย์การชำระเงินแบบลาย

คุณจึงมีปลั๊กอินที่ปรับปรุงปลั๊กอินอื่นในลักษณะเฉพาะ มันเป็นส่วนขยาย นี่คือคำวิเศษณ์จากระบบนิเวศของ WordPress

ฟังก์ชัน: apply_filters () และ do_action () ทำงานอย่างไร

คำถามต่อไป: WooCommerce จะมาดูฟังก์ชันเพิ่มเติมได้อย่างไร? ท้ายที่สุดแล้วมันง่ายมากที่จะจินตนาการถึงการเขียนปลั๊กอินอีคอมเมิร์ซที่“ ทำงานเฉพาะกับเกตเวย์การชำระเงินไม่กี่ " จากนั้นหากคุณต้องการ Stripe คุณจะต้องแก้ไข WooCommerce อย่างสมบูรณ์และอาจต้องสร้างเครื่องมือของคุณเองที่ชื่อว่า StripeCommerce ซึ่งอาจกลายเป็นคู่แข่งของ WooCommerce หรือเพียงแค่ใช้ชีวิตบนเว็บไซต์ของลูกค้าของคุณที่สามารถจ่ายได้ ความช่วยเหลือส่วนบุคคล

มันเป็นเรื่องยุ่งยากที่จะพิจารณา แต่โชคดีที่ WooCommerce กำลังทำสิ่งที่ดีกว่ามาก มันทำให้การใช้งานของทั้งสองฟังก์ชั่น: Apply_filters () และ do_action () ทั้งสองฟังก์ชั่นช่วยให้คุณสามารถสร้างวงเล็บเหลี่ยมบน WordPress และนี่เป็นส่วนพื้นฐานของระบบ WordPress Hooks โดยทั่วไป

Apply_filters () และ do_action () ความแตกต่างค่อนข้างง่าย:

  • Apply_filters () อนุญาตให้คุณเชื่อมต่อตัวกรองกับฟังก์ชั่น
  • do_action () อนุญาตให้คุณเชื่อมต่อการทำงานกับฟังก์ชั่น

ลองดูตัวอย่างเพื่อดูว่าพวกเขาทำงาน

ตัวอย่างการใช้ WooPress hooks

สำหรับตัวอย่างของเราเราจะใช้ปลั๊กอิน "ใบเสนอราคาประจำวัน" พร้อมด้วยส่วนขยายที่ปรับเปลี่ยนปลั๊กอินนี้ในลักษณะเฉพาะ หากต้องการติดตามและดูโค้ดฉบับเต็มให้ดาวน์โหลดปลั๊กอินเป็นไฟล์ ZIP https://wpshout.com/media/2016/10/plugins.zip

ปลั๊กอินเดิม

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

ส่วนขยายปลั๊กอิน

ดังที่เราทราบปัญหาของคำพูดส่วนใหญ่คือ "Carl Sagan" ไม่ได้กล่าวไว้ ส่วนขยายของเราแก้ไขปัญหานี้โดยใช้เครื่องมือหลายอย่าง:

  • หัวจดหมายขนาดใหญ่แสดงวันที่ของวันนี้และคำพูดของ Carl Sagan
  • การแทนที่คำเฉพาะเพื่อเปลี่ยนคำพูดให้เป็นสิ่งที่คาร์ลเซแกนอาจพูด
  • ผู้เขียนของคำพูดเดิมมีการเปลี่ยนแปลงและตอนนี้คำพูดที่ถูกนำมาประกอบกับคาร์ลเซแกนอย่างถูกต้อง

นี่คือปลั๊กอินและส่วนขยายในการดำเนินการ:

อ้างอิงในการดำเนินการ

รหัส

เพื่อให้สิ่งนี้เกิดขึ้นจำเป็นต้องมีสองขั้นตอน:

ปลั๊กอินดั้งเดิมกำหนด hooks - action hooks และ filter hooks - อนุญาตให้โค้ดภายนอกแก้ไขหรือเพิ่มโค้ดของตัวเองที่ประเด็นสำคัญ ปลั๊กอินใช้ apply_filters () และ do_action () เพื่อให้บรรลุสิ่งนี้

ส่วนขยายกำหนดฟังก์ชัน hook เกี่ยวกับการดำเนินการและตัวกรองซึ่งจะแก้ไขปลั๊กอินดั้งเดิมด้วยวิธีที่จำเป็น

รหัสในปลั๊กอินดั้งเดิม

ส่วนที่สำคัญที่สุดของโค้ดสำหรับเราคือสิ่งที่เราทำหลังจากได้รับข้อมูลจาก API ข้อมูลนี้มีให้ในรูปแบบอาร์เรย์ที่มีสององค์ประกอบ: ข้อความ: ข้อความของการอ้างอิง; และผู้เขียน: ผู้กล่าวอ้าง ดังนั้นรหัสของเราจะมีลักษณะดังนี้:

add_shortcode ('extensible_plugin_demo', 'bpc_output_extensible_plugin'); ฟังก์ชัน bpc_output_extensible_plugin () {ob_start (); // ขอเกี่ยวก่อนแสดง! do_action ('bpc_before_get_qod_text'); $ qod_data = bpc_get_qod_data (); ถ้า (is_array ($ qod_data)) {echo ' '; $ qod_text = $ qod_data ['text']; $ qod_author = $ qod_data ['ผู้แต่ง']; // กรองเนื้อหา! $ qod_text = apply_filters ('bpc_qod_text', $ qod_text); $ qod_author = apply_filters ('bpc_qod_author', $ qod_author); เสียงสะท้อน $ qod_text; ก้อง ' '; ก้อง $ qod_author; ก้อง ' '; } // Action hook หลังจากที่เหลือของเอาต์พุต! do_action ('bpc_after_get_qod_text'); กลับ ob_get_clean (); }

รหัสคีย์ในส่วนขยาย

ปลั๊กอินไม่ประกอบด้วยสิ่งอื่นใดนอกจากการดำเนินการและตัวกรองเพื่อแก้ไขปลั๊กอินดั้งเดิม นี่คือรหัสสำหรับส่วนขยาย:

add_filter( 'bpc_qod_text', 'bpc_filter_qod_text' );
// Filter: remplacer des mots spécifique
function bpc_filter_qod_text( $text ) {
    $text = str_replace( 
        array( ' I ', ' me ', ' the ', ' is ', ' am ', ' are ' ),
        array( ' I, a descendent of savannah-dwelling hominids that somehow evolved an astounding capacity for self-reflection, ', ' the cooled-off stellar matter I call "me" ', ' the trillions of atoms that make up the ', ' seems, without the mind-boggling perspective of quantum physics, to be ', ' cannot, due to the Heisenberg Uncertainty Principle, be determined not to be ', ' appear to our best scientific instruments to be ' ),
        $text
    );
    return $text;
}

// Filter: barré le texte qui précède le nom de l'auteur et ajouter Carl Sagan à la suite
add_filter( 'bpc_qod_author', 'wpshout_filter_qod_author' );
function wpshout_filter_qod_author( $text ) {
    $text = '<strike>' . $text . '</strike> Carl Sagan';
    return $text;
}

// Action: Ajouter un titre
add_action( 'bpc_before_get_qod_text', 'bpc_set_up_quote' );
function wpshout_set_up_quote() {
    echo '<h4>Carl Sagan Quote of the Day for ' . date( 'F j, Y') . ':</h4>';
}

// Action: Ajouter une image
add_action( 'bpc_after_get_qod_text', 'bpc_add_carl_boom' );
function bpc_add_carl_boom() {

    echo '<div><img class="aligncenter" src="' . plugin_dir_url( __FILE__ ) . 'carl_sagan_mind_blown.gif"></div>';
}

อย่างที่คุณเห็นสิ่งเหล่านี้เป็นการใช้มาตรฐานของ " add_action () "และ" add_filter () "และทั้งสองฟังก์ชั่นจะเชื่อมต่อกับวงเล็บเหลี่ยมซึ่งเราเรียกว่า" bpc_qod_text "

ผลลัพธ์ที่ได้คือตอนนี้ปลั๊กอินของเราสามารถขยายได้: นักพัฒนาที่สองสามารถดูแก้ไขปลั๊กอินและพูดว่า "ฉันหวังว่าคาร์ลเซแกนกล่าวว่า »และทำในขณะที่ใช้ปลั๊กอินดั้งเดิมเป็นฐานเช่นเดียวกับธีมแม่และลูกบน WordPress

นี่เป็นกลอุบายที่ทำให้ปลั๊กอินเช่น WooCommerce เป็นที่นิยมมากทำให้คุณสามารถเพิ่มคุณสมบัติใหม่ได้

เพียงเท่านี้สำหรับบทช่วยสอนนี้ ฉันหวังว่าคุณจะเข้าใจดีกว่ากรณีการใช้ตัวกรองและการกระทำ WordPress ที่แตกต่างกัน