Explicação da função apply_filters e suas variáveis

15

Estou aprendendo a construir formulários html usando PHP, tomando um exemplo do plugin "simplr form registration".

Estou vendo este código:

$form .= apply_filters('simplr-reg-instructions', __('Please fill out this form to sign up for this site', 'simplr-reg'));

Você pode explicar o que está acontecendo aqui - o que a função faz, por que a necessidade de 'simplr-reg-instructions' e 'simplr-reg'?

Por que essa linha não pode ser simplesmente:

$form .= 'Please fill out this form to sign up for this site' ;

Li a referência da função, mas ainda não consigo descobrir.

    
por Ash 06.05.2011 / 17:56

2 respostas

21

Essa linha está usando duas funções diferentes que precisam de duas explicações separadas.

__ ()

Esta é uma função de tradução. Se as configurações forem feitas corretamente, ele traduzirá o primeiro parâmetro de uma lista de strings pré-traduzidas. Se uma instalação tiver um arquivo com uma tradução compilada para essa função, ela será usada. Claro, o plugin tem que empacotar sua própria tradução, daí o segundo parâmetro. simplr-reg diz a __() que a tradução da string 'Please fill out this form to sign up for this site' deve estar no arquivo de tradução associado a 'simplr-reg' (isso é feito anteriormente no plugin por meio da função load_plugin_textdomain() ).

A função então retorna a tradução. Se não houver tradução para retornar (por exemplo, o idioma atual não tiver uma tradução compilada, a string não tiver uma tradução compilada para esse pacote etc.), a entrada original será retornada.

Portanto, para um site WordPress em inglês, __( 'This', 'simplr-reg' ) é funcionalmente o mesmo que 'This' . Para aprender mais sobre l10n (localização), leia-o no códice:

enlace

apply_filters ()

Esta função permite filtrar os valores usados pelo plug-in, conforme necessário. Este é um dos principais conceitos para entender como um desenvolvedor de plugins. O WordPress é estendido através de ganchos, que são basicamente pontos de acesso, permitindo que você cronometre a execução das ações do seu plugin e / ou manipule informações / dados que o WordPress usa, etc.

Para manipular dados como o snippet de código que você perguntou, use a função add_filter() . Veja um exemplo básico de como isso funciona:

add_filter( 'simplr-reg-instructions', 'wpse16573_my_filter' );

Você provavelmente reconhecerá o primeiro argumento lá. É o mesmo usado em add_filter acima. Este é o nome do gancho. O segundo argumento é o retorno de chamada do filtro. Deve ser um callback válido para uma função ( leia mais sobre callbacks aqui ). Essa linha de código diz "Quando o 'simplr-reg-instructions' hook é executado, execute a função com o retorno de chamada que eu forneci." apply_filters() executa o gancho encontrado em seu primeiro argumento, essencialmente significando "executar todas as funções registradas para este gancho". apply_filters , em seguida, passa todos os outros argumentos (neste caso, 'Please fill out this form to sign up for this site' ) para as funções nesse filtro. Então, o retorno de chamada que eu usei acima deve ficar assim:

function wpse16573_my_filter( $text ){
  $text = "<strong>$text</strong>";
  return $text;
}

Existem dois tipos de ganchos no WordPress: filtros (o tipo que estamos usando aqui) e ações. A principal diferença entre os dois é que os filtros esperam que você retorne algo e as ações não. Então, para esse filtro, meu exemplo acima adiciona um pouco de html em torno de 'Please fill out this form to sign up for this site' e o retorna.

Leia mais sobre ações e ganchos aqui:

enlace

    
por John P Bloch 06.05.2011 / 18:27
5

Você tem duas funções diferentes aqui apply_filters e __()

A função apply_filters é a forma como o WordPress permite que você altere / edite o valor das variáveis usando suas próprias funções de callback e a função add_filter . aceita muitos argumentos, mas os mais importantes são os dois primeiros:

$something = apply_filters( $tag, $value, $var ... );

$ tag é o nome do gancho de filtro que é usado em add_filter eg:

add_filter($tag,callback_function);

$ value é o valor real que você poderá alterar ou editar.

$ var é variáveis que sua função de retorno de chamada pode usar, uma ou mais.

A função __() é usada para traduções:

__($message,$text_domain);

$ message é a mensagem real para traduzir.

$ text_domain é a tag de domínio de texto usada para carregar a tradução do plug-in ou do tema com load_plugin_textdomain()

o que faz?

Ele procura no módulo de localização a tradução de $ message e passa a tradução para a instrução de retorno do PHP. Se nenhuma tradução for encontrada para $ message, apenas retornará $ message.

Então agora as duas funções no seu caso funcionam da mesma maneira, o apply_filters enviará qualquer função de retorno de chamada associada ao simplr-reg-instructions filter hook o valor traduzido (se existir) de 'Por favor, preencha este formulário para se inscrever neste site' usando o domínio de texto de simplr-reg

    
por Bainternet 06.05.2011 / 18:23

Tags