ต่อเข้ากับปลั๊กอิน


12

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

ฉันสามารถเพิ่ม hooks ที่กำหนดเองในปลั๊กอินเหล่านั้น แต่เห็นได้ชัดว่านี่จะไม่ทำงานได้ดีเมื่อฉันต้องการกระจายปลั๊กอินของฉัน มีวิธีที่ดีในการเพิ่ม hooks ลงในปลั๊กอินของผู้อื่นจากปลั๊กอินของฉันเองหรือไม่? เป็นทางออกที่แท้จริงเพียงอย่างเดียวที่ขอให้ผู้เขียนรวม hooks แบบกำหนดเองเพื่อให้นักพัฒนาคนอื่นสามารถทำงานต่อได้หรือไม่

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

เราแค่ต้องพยายามพัฒนาปลั๊กอินให้ดีขึ้นเพื่อที่เราจะได้เล่นด้วยกันได้ดี?


1
เป็นคำถามที่ดีมาก!
MikeSchinkel

"เป็นทางออกเดียวที่แท้จริงที่จะขอให้ผู้แต่งใส่ hooks แบบกำหนดเองเพื่อให้ผู้พัฒนารายอื่นสามารถสร้างผลงานได้" ในกรณีส่วนใหญ่ใช่ มีบางสถานการณ์ที่คุณสามารถจัดการกับปลั๊กอินของพวกเขาทางอ้อมได้ แต่โดยปกติจะไม่เป็นเช่นนั้น บอกให้พวกเขาเขียนปลั๊กอินราวกับว่าพวกเขากำลังเขียนให้กับคอร์ของ WordPress - รวมตัวกรอง / แอ็คชั่นในทุกที่ที่อาจจำเป็นต้องใช้
Viper007Bond

1
คำแนะนำ: เอกสาร hooks ที่ปลั๊กอินของคุณจัดเตรียมไว้เพื่อให้ผู้เขียนปลั๊กอินสามารถโต้ตอบกับมันได้
hakre

คำตอบ:


6

@Ryan Elkins:

ฉันเดาคำตอบขึ้นอยู่กับการนำเข้าแต่ละกรณีใช้กับคุณ ในบางกรณีมันอาจเป็นสิ่งที่คุณต้องการได้อย่างรวดเร็วและสกปรกในบางกรณีมันอาจเป็นกรณีการใช้งานที่สำคัญกว่า นี่คือสองสิ่งที่ควรนึกถึง:

มองหา Alternate Hooks ภายใน WordPress Core

หากเป็นสิ่งที่รวดเร็วและสกปรกบางครั้งคุณสามารถใช้ hooks ดาวน์สตรีมอื่น ๆ จากแกนกลางเพื่อแก้ไขสิ่งที่คุณต้องการหรือทั้งตะขออัปสตรีมและดาวน์สตรีมผ่านการใช้ob_start()/ ob_end_clean()(ดู@Todd Perkins ตอบ "การจัดการกับเอาต์พุต HTML ขนาดใหญ่ผ่านรหัสปลั๊กอิน " สำหรับตัวอย่างรหัส)

ในการติดตามตะขอคุณสามารถใช้ปลั๊กอินเครื่องมือตะขอที่ฉันโพสต์เมื่อวานนี้เพื่อช่วยคุณค้นหาตะขอที่คุณสามารถใช้งานได้

ส่ง Patch พร้อม Hook ที่ต้องการของคุณไปยังผู้พัฒนาปลั๊กอิน

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

หากคุณไม่คุ้นเคยกับการสร้างแพทช์ที่นี่เป็นบทความที่ดีเกี่ยวกับแพทช์ WordPress หลักซึ่งส่วนใหญ่ใช้กับปลั๊กอินการแพทช์และที่ไม่ได้หวังว่าจะชัดเจนว่าจะทำอย่างไร:

หวังว่าจะช่วยได้ไหม

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

บางทีสิ่งต่าง ๆ อาจจะแตกต่างกันถ้า WordPress มีความสามารถในการติดตั้งปลั๊กอินอัตโนมัติ ตามปกติแล้วฉันต้องเขียนฟังก์ชั่นมากมายที่ฉันต้องการตั้งแต่เริ่มต้นเพราะลูกค้าต้องการบางอย่างและปลั๊กอินที่พร้อมใช้งานในขณะที่ 90% นั้นไม่อนุญาตให้ฉันมีความยืดหยุ่นในการอัปเดต 10% ที่เหลืออยู่

ฉันหวังว่าผู้ที่เป็นผู้นำชุมชน WordPress จะระบุวิธีการเพื่อให้แน่ใจว่าปลั๊กอินได้รับรางวัลสำหรับการปฏิบัติที่ดีที่สุด (เช่นการเพิ่มตะขอสำหรับนักพัฒนาอื่น ๆ ) เหมือนคำตอบที่ดีจะได้รับรางวัลในเว็บไซต์ StackExchange


2

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

สำหรับผู้เริ่มใช่

เป็นทางออกที่แท้จริงเพียงอย่างเดียวที่ขอให้ผู้เขียนรวม hooks แบบกำหนดเองเพื่อให้นักพัฒนาคนอื่นสามารถทำงานต่อได้หรือไม่

นั่นจะเป็นทางออกที่ดี

คุณสามารถคัดลอกปลั๊กอินอื่น ๆ และเพียงเพิ่มการเปลี่ยนแปลงใด ๆ แม้ว่ามันจะยุ่งยากมากขึ้น


2

ฉันคิดว่าคุณตอบคำถามของคุณในคำถามเพื่อให้มันกลายเป็นวาทศิลป์

เห็นได้ชัดว่าคุณกำลังพูดถึงระบบที่คล้ายคลึงกับระบบที่ Google สนับสนุนกับ Android และระบบ Intent ซึ่งแอปพลิเคชันสามารถเผยแพร่การกระทำที่สามารถทำได้ในนามของแอปพลิเคชันอื่น ๆ ออกมา โดยส่วนตัวฉันคิดว่ามันเป็นสิ่งที่เราต้องมุ่งไปสู่การเป็นนักพัฒนาที่ดี - เราใช้ WordPress เพราะมันยอดเยี่ยมน่ากลัวพอที่จะทำการตัดสินใจว่าจะใช้มันหรือพัฒนาผลิตภัณฑ์ที่คล้ายกันในบ้าน ที่เก็บปลั๊กอินนั้นเป็นสิ่งเดียวกันอีกครั้งซึ่งส่วนใหญ่เป็นผู้ใช้ + นักพัฒนา - พัฒนาปลั๊กอินตัวสั่นด้วยความตื่นเต้นเมื่อมีสิ่งที่ดีอย่างสมบูรณ์

'การพัฒนาที่ซ้ำซ้อน' เหมือนกันคืออะไรคำถามของคุณที่นี่ ระบบ Android Intent อนุญาตให้แอปพลิเคชั่นใช้ฟังก์ชั่นที่สร้างไว้แล้วและส่งผ่านข้อมูลระหว่างกันซึ่งเป็นที่นิยมและใช้บ่อยเพราะมันถูกผลักอย่างหนัก มีระบบที่คล้ายกันติดตั้งใช้งานกับ WordPress แล้ว แต่ไม่ค่อยมีใครใช้เกินกว่า hooks ที่มีอยู่ในรหัสหลักซึ่งใช้กันอย่างมาก

มันจะเป็นประโยชน์ต่อชุมชนหากมี hooks ในปลั๊กอินที่กำหนดเองเพิ่มขึ้น แต่อย่างที่คุณพูดไม่มีวิธีง่ายๆในการเพิ่ม hooks ในเมื่อ / ที่ไหนที่คุณต้องการ

ในแง่ของปลั๊กอิน Twitter ที่คุณต้องการส่งอีเมลถึงผู้เขียนฉันแน่ใจว่าเขายินดีที่จะเพิ่มไว้ในตัวคุณ

หากมีสถานที่ที่คุณคิดว่าน่าจะเป็นสถานที่ที่ดีที่จะนำเบ็ดเข้ามาในปลั๊กอินของคุณให้ทำและทำเอกสารให้ดี หากมีคนเริ่มใส่ hooks ลงในปลั๊กอินหรือมีแรงผลักดันโดยทั่วไปในการทำเช่นนั้นมันจะเกิดขึ้นในที่สุด

ดังนั้นเพื่อตอบคำถามสิ้นสุดของ:

เราแค่ต้องพยายามพัฒนาปลั๊กอินให้ดีขึ้นเพื่อที่เราจะได้เล่นด้วยกันได้ดี?

ใช่.


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


นั่นจะใช้งานได้ แต่จะเกิดอะไรขึ้นถ้าฟังก์ชั่นเสริมที่แตกต่างกันมีชื่อเหมือนกัน?
Arlen Beiler

อ๊ะอาจจะไม่ใช่เพราะคุณต้องรู้ว่ามีการรีทวีตข้อมูลอะไรและใครเป็นใคร การตรวจสอบฟังก์ชั่นเป็นการแก้ปัญหาแบบรันไทม์สิ่งที่เราต้องการคือการแก้ปัญหาแบบเรียลไทม์ซึ่งเรียกใช้เมื่อฟังก์ชั่นที่เป็นปัญหาถูกเรียกหรือส่งคืนข้อมูล
Arlen Beiler

@Arlen - สมมติว่าคุณต้องสร้างฟังก์ชั่นของคุณเองซึ่งจะตรวจสอบว่ามีฟังก์ชั่นเฉพาะอยู่หรือไม่ มันจะทำงานหลังจาก 'plugins_loaded' และหากมีก็จะเป็นการตั้งค่าบูลีนซึ่งเปิดใช้งานคุณสมบัติ มันขึ้นอยู่กับรหัสไม่เปลี่ยนแปลง แต่ฉันไม่เห็นว่าทำไมมันไม่ทำงาน?
ไม่มีใคร

0

กำหนดฟังก์ชั่น:

function my_footer() {
    do_action('my_footer');
}

ตอนนี้คุณสามารถตะขอเบ็ดนี้: add_action('my_footer', 'example_function', 1);# ข้อมูลเพิ่มเติมโปรดดูที่เกี่ยวกับการโพสต์ของฉัน


ไม่ => ตอนนี้ตัวเอง => นี่ แก้ไข?
Arlen Beiler

ฉันเข้าใจวิธีการเพิ่ม hooks ที่กำหนดเอง - คำถามคือวิธีการขอออกจากปลั๊กอินของคนอื่นในลักษณะที่ไม่ต้องการการแก้ไขปลั๊กอินโดยตรง
Ryan Elkins

@Arlen: ขอบคุณมากขอโทษสำหรับภาษาอังกฤษที่ไม่ดีของฉัน @Ryan: มันเป็นไปไม่ได้เมื่อไม่มีปลั๊กอินให้ขอ; แต่คุณสามารถตรวจสอบการแทนที่ฟังก์ชั่นหรือชั้นเรียนเมื่อผู้เขียนขอสิ่งนี้ในปลั๊กอินของเขา แต่มันเป็นไปได้ที่จะขอปลั๊กอินและตะขอที่ใช้งานก่อนหน้านี้ใน WP เป็นปลั๊กอินอื่นและแทนที่ฟังก์ชั่นของเขา
ก่อสร้าง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.