Tôi muốn lấy số phiên bản Plugin một cách linh hoạt


10

Thật đáng tiếc, gần đây tôi đã đưa ra W3TC để triển khai một màn hình thay đổi "trong bản cập nhật" (rất tuyệt), trong plugin của tôi , nhưng có một đoạn mã khó xử mà tôi muốn tránh.

Nếu bạn nhìn vào đầu tập tin này , bạn sẽ thấy đoạn mã sau:

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

Ick. : P

Điều đó cần phải được cập nhật, để chức năng có thể được đặt giữa plugin của bạn và phiên bản ổn định hiện tại.

Tôi đã xem qua Codex và không thể tìm thấy nó, nhưng có GOT là một hàm API để lấy phiên bản của một plugin.

Bất kì manh mối nào?

Câu trả lời:



14

Có một hàm gọi là get_plugin_data () . Hãy thử gọi nó từ trong tệp plugin chính nếu bạn cần:

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

Nhưng như đã nói trong các câu trả lời cho câu hỏi khác, sẽ tốt hơn nếu chỉ định nghĩa một biến PHP như bạn đang làm.


Cảm ơn! Hy vọng rằng, hiệu suất sẽ không phải là một vấn đề lớn, vì điều này chỉ được gọi một lần và liên quan đến một cuộc gọi curl. Tôi vừa gặp rắc rối vì có nhiều bản sao của số phiên bản ở khắp mọi nơi.
Chris Marshall

1
nó dường như không hoạt động. Tôi nhận được cảnh báo này Call to undefined function get_plugin_data().
Ari

@AriSusanto Bạn đang cố gắng sử dụng nó ở mặt trước? Các chức năng quản trị plugin WP chỉ được xác định trong phần quản trị. Nếu bạn cần sử dụng phần này ở mặt trước, bạn sẽ phải bao gồm tệp wp-admin/includes/plugin.php.
Goldenapples 6/12/13

Không, tôi sử dụng nó trên bảng quản trị.
Ari

Nếu bạn có lỗi không xác định, bạn có thể sử dụng hàm get_plugin_data. Đối với sự hoàn hảo, tôi đã thêm một nhận xét ở đây: wordpress.stackexchange.com/questions/361/ khăn
baptx

9

Một thay thế cho get_plugin_data()get_file_data () có sẵn mà không cần chi phí tải các tệp bổ sung.

Chỉ cần thêm nó vào tập tin plugin chính của bạn:

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

Dưới mui xe get_file_data, một số quét cleaver là khá hiệu quả.

Và nếu cần xác định hằng số của bạn:

define ( 'YOURPLUGIN_CURRENT_VERSION', $plugin_version );

Tôi đoán để thực hiện nó cũng tốt hơn để viết số phiên bản bằng tay? (như được giải thích ở đây: wordpress.stackexchange.com/questions/361/iêu )
baptx 18/07/19

@baptx có, tuy nhiên, đây là một tối ưu hóa sẽ không đáng kể khi xem xét mọi thứ khác mà Wordpress thực hiện theo mọi yêu cầu. Nói cách khác, nó không thành vấn đề
paulcol.

1

Một giải pháp khả thi có thể là regex:

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

Phải đề cập rằng regex này nhanh hơn một chút get_file_data()nhưng nói chung bạn sẽ không nhận thấy điều đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.