ฉันต้องการรับหมายเลขเวอร์ชันปลั๊กอินแบบไดนามิก


10

หมอตำแยฉันเพิ่ง cribbed W3TC เพื่อใช้การแสดงผลรายการ "ในการปรับปรุง" (เจ๋งมาก) ในปลั๊กอินของฉันแต่มีโค้ดที่น่าอึดอัดใจเล็กน้อยที่ฉันต้องการหลีกเลี่ยง

หากคุณดูที่ด้านบนของไฟล์นี้คุณจะเห็นรหัสต่อไปนี้:

define ( 'BMLT_CURRENT_VERSION', '2.1.16' ); // This needs to be kept in synch with the version above.

ick : P

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

ฉันได้อ่านข้อมูล Codex และไม่สามารถหาได้ แต่มีGOTจะเป็นฟังก์ชัน API สำหรับการรุ่นของปลั๊กอิน

เบาะแสใด ๆ

คำตอบ:



14

มีฟังก์ชั่นที่เรียกว่าเป็นget_plugin_data () ลองโทรหานี้จากภายในไฟล์ปลั๊กอินหลักหากคุณต้องการ:

$plugin_data = get_plugin_data( __FILE__ );
$plugin_version = $plugin_data['Version'];

แต่ดังที่ได้กล่าวไว้ในคำตอบของคำถามอื่น ๆ มันเป็นการดีกว่าสำหรับประสิทธิภาพในการกำหนดตัวแปร PHP ตามที่คุณทำ


ขอบคุณ! หวังว่าประสิทธิภาพจะไม่เป็นเรื่องใหญ่อย่างนี้เรียกว่าครั้งเดียวเท่านั้นและเกี่ยวข้องกับการโทรขด ฉันเพิ่งได้รับปัญหาจากการมีหมายเลขรุ่นหลายชุดทั่วสถานที่
Chris Marshall

1
ดูเหมือนจะไม่ทำงาน ฉันได้รับคำเตือน Call to undefined function get_plugin_data()นี้
Ari

@AriSusanto คุณพยายามที่จะใช้มันในส่วนหน้าหรือไม่? ฟังก์ชั่นการบริหารปลั๊กอิน WP ถูกกำหนดไว้ในส่วนของผู้ดูแลระบบเท่านั้น หากคุณต้องการใช้สิ่งนี้ที่ส่วนหน้าคุณจะต้องรวมไฟล์wp-admin/includes/plugin.phpไว้ด้วย
goldenapples

ไม่ฉันใช้มันในแผงการจัดการ
Ari

หากคุณมีข้อผิดพลาดที่ไม่ได้กำหนดคุณสามารถใช้ฟังก์ชัน get_plugin_data สำหรับความสมบูรณ์แบบฉันได้เพิ่มความคิดเห็นที่นี่: wordpress.stackexchange.com/questions/361/…
baptx

9

อีกทางเลือกหนึ่งget_plugin_data()คือget_file_data ()ซึ่งสามารถใช้ได้โดยไม่มีค่าใช้จ่ายในการโหลดไฟล์เพิ่มเติม

เพียงเพิ่มไฟล์นี้ลงในไฟล์ปลั๊กอินหลักของคุณ:

$plugin_data = get_file_data(__FILE__, array('Version' => 'Version'), false);
$plugin_version = $plugin_data['Version'];

ภายใต้ประทุนget_file_dataมีการสแกนมีดบางส่วนที่มีประสิทธิภาพ

และหากจำเป็นต้องกำหนดค่าคงที่ของคุณ:

define ( 'YOURPLUGIN_CURRENT_VERSION', $plugin_version );

ฉันเดาว่ามันจะดีกว่าถ้าจะเขียนหมายเลขรุ่นด้วยตนเอง? (เช่นอธิบายที่นี่: wordpress.stackexchange.com/questions/361/ … )
baptx

@ baptx ใช่ แต่นี่คือการเพิ่มประสิทธิภาพอย่างหนึ่งที่จะเล็กน้อยเมื่อพิจารณาทุกอย่างที่ Wordpress ทำกับทุกคำขอ กล่าวอีกนัยหนึ่งมันไม่สำคัญ
พอลคอล

1

ทางออกหนึ่งที่เป็นไปได้คือ regex:

$plugin_version = NULL;
if(preg_match('/\*[\s\t]+?version:[\s\t]+?([0-9.]+)/i',file_get_contents( __FILE__ ), $v))
    $plugin_version = $v[1];

ต้องพูดถึงว่า regex นี้เร็วกว่าget_file_data()แต่โดยทั่วไปคุณจะไม่สังเกตเห็น

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