동적으로 플러그인 버전 번호를 얻고 싶습니다


10

Howdy, 나는 최근에 플러그인 에서 "업데이트 중"변경 목록 표시 (매우 시원함)를 구현하기 위해 W3TC를 막았습니다 . 그러나 피하고 싶은 어색한 코드가 있습니다.

이 파일 의 상단을 보면 다음 코드가 표시됩니다.

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

Ick. :피

이 기능을 최신 상태로 유지해야 기능이 플러그인과 현재 안정 버전 사이에서 델타가 될 수 있습니다.

Codex를 익히고 찾을 수는 없지만 플러그인 버전을 가져 오기위한 API 함수 인 GOT 이 있습니다.

단서가 있습니까?

답변:



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가 모든 요청에 ​​대해 수행하는 모든 것을 고려할 때 한 가지 최적화는 무시할 수 있습니다. 다시 말해, 그것은 중요하지 않습니다
paulcol.

1

가능한 해결책은 정규식이 될 수 있습니다.

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

이 정규 표현식은 약간 빠르지 get_file_data()만 일반적으로 눈치 채지 못할 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.