รับเส้นทางไปยังปลั๊กอินอื่น


10

ในการรับเส้นทางไปยังปลั๊กอินคุณสามารถใช้plugin_dir_path(__FILE__)- แต่ต้องมีการเรียกจากภายในปลั๊กอิน

วิธีที่คุณสามารถเชื่อถือได้เส้นทางปลั๊กอิน B (คนpluginb/pluginb.php) จากภายในปลั๊กอิน?

แก้ไข:มันสันนิษฐานว่าคุณรู้ว่าตัวบุ้งของปลั๊กอินที่คุณอยู่หลัง (จริง ๆ แล้วคุณสามารถได้รับจากget_plugins()) แต่ฉันต้องการให้มันทำงานโดยทั่วไป


สิ่งนี้จะนำไปใช้กับปลั๊กอินใด ๆ ? หรือหนึ่ง / หลายโดยเฉพาะอย่างยิ่ง? หากหลังพวกเขาเป็นของคุณเองหรือสาธารณะเผยแพร่?
TheDeadMedic

ดังนั้นฉันสมมติว่าคุณรู้ว่าตัวบุ้งของ plug-in ของคุณเป็นเช่น: pluginb/pluginb.phpแต่เป็นบุคคลที่สาม
Stephen Harris

คำตอบ:


9

เดาที่ดีที่สุดของฉันจะเป็น:

if ( ! is_file( $dir = WPMU_PLUGIN_DIR . '/pluginb/pluginb.php' ) ) {
    if ( ! is_file( $dir = WP_PLUGIN_DIR . '/pluginb/pluginb.php' ) )
        $dir = null;
}

return $dir;

อย่างไรก็ตามความอันตรายที่นี่ยังคงเป็นข้อสันนิษฐานของ "basename" ของปลั๊กอิน - ปลั๊กอินที่เขียนอย่างดีจะยังคงทำงานแม้ว่าไดเรกทอรีและ / หรือไฟล์หลักจะถูกเปลี่ยนชื่อ (ด้วยเหตุผลใดก็ตาม)

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


อ่าฉันได้อัพเดทคำถามแล้ว :) คุณสามารถรับปลั๊กอินได้จากget_plugins()- ในกรณีที่ใช้งานของฉันมีเพียงพอ หากคุณหลังจาก plug-in ที่บางและไม่มีอะไรที่ดีกว่าที่มีอยู่ผมคิดว่าคุณสามารถค้นหา plug-in get_plugins()ผ่านชื่อ
Stephen Harris

+1 ต้องการหลีกเลี่ยงการใช้ค่าคงที่ - แต่วิธีนี้จะตรวจสอบอย่างน้อยเมื่อใช้พวกเขา :) - และเป็นวิธีการที่แกนดูเหมือนจะทำสิ่งต่างๆ
Stephen Harris

2

ดังนั้นวิธีหนึ่งคือการโทรplugin_dir_path()ภายในปลั๊กอินปัจจุบันและแทนที่ชื่อไดเรกทอรีปลั๊กอินของคุณเองด้วยวิธีของกระสุนของปลั๊กอินที่คุณอยู่หลัง ( pluginb/pluginb.php):

ดังนั้นภายในของเรา Plug-in plugina/plugina.php,

$plugin_b = str_replace('plugina/','pluginb/pluginb.php',plugin_dir_path(__FILE__));
echo $plugin_b; //Prints path/to/pluginb/pluginb.php';

ฉันจะแนะนำต่อเรื่องนี้เนื่องจากมีข้อสันนิษฐานว่าปลั๊กอิน B อยู่ในไดเรกทอรีเดียวกับ A (ซึ่งจะไม่เป็นกรณี, ปลั๊กอิน ALA MU)
TheDeadMedic

ขอบคุณคิดว่าจะมีบางอย่างที่ฉันพลาด :)
สตีเฟ่นแฮร์ริส

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.