Quero obter um número de versão do plug-in dinamicamente


10

Olá, recentemente criei o W3TC para implementar uma exibição de lista de alterações "in-update" (muito legal), no meu plug-in , mas há um pedaço estranho de código que prefiro evitar.

Se você olhar para a parte superior deste arquivo , verá o seguinte código:

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

Ick. : P

Isso precisa ser mantido atualizado, para que a função possa delta entre seu plug-in e a versão estável atual.

Tenho lidos do Codex, e não pode encontrá-lo, mas não tem GOT para ser uma função da API para obter a versão de um plugin.

Alguma pista?

Respostas:



14

Existe uma função chamada get_plugin_data () . Tente chamar isso de dentro do arquivo principal do plug-in se precisar:

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

Mas, como é dito nas respostas à outra pergunta, é melhor para o desempenho definir apenas uma variável PHP como você está fazendo.


Obrigado! Felizmente, o desempenho não será um grande problema, pois isso é chamado apenas uma vez e envolve uma chamada direta. Acabei de ter problemas por ter várias cópias do número da versão em todo o lugar.
Chris Marshall

11
parece não funcionar. Eu recebo este aviso Call to undefined function get_plugin_data().
Ari #

@AriSusanto Você está tentando usá-lo no front end? As funções de administração do plugin WP são definidas apenas na seção admin. Se você precisar usar isso no front-end, precisará incluir o arquivo wp-admin/includes/plugin.php.
goldenapples

Não, eu uso no painel de administração.
Ari #

Se você tiver o erro indefinido, poderá usar a função get_plugin_data. Para o desempenho, adicionei um comentário aqui: wordpress.stackexchange.com/questions/361/…
baptx

9

Uma alternativa para get_plugin_data()é get_file_data (), que está disponível sem a sobrecarga de carregar arquivos adicionais.

Basta adicionar isso ao seu arquivo principal de plug-in:

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

Sob o capô, get_file_datafaz uma varredura de cutelo para ter um bom desempenho.

E, se necessário, defina sua constante:

define ( 'YOURPLUGIN_CURRENT_VERSION', $plugin_version );

Eu acho que para o desempenho também é melhor escrever o número da versão manualmente? (como explicado aqui: wordpress.stackexchange.com/questions/361/… )
baptx

@ batx sim, no entanto, esta é uma otimização seria insignificante, considerando tudo o que o Wordpress faz em cada solicitação. Em outras palavras, isso não importa
paulcol.

1

Uma solução possível pode ser regex:

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

É preciso mencionar que esse regex é um pouco mais rápido do que o normal, get_file_data()mas geralmente você não notará.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.