Como utilizar capital_P_dangit() no WordPress (PHP)3 min leitura

Explicação de como utilizar a função capital_P_dangit() do WordPress, com um exemplo prático de código PHP para desabilitá-la e outro para criar seu próprio corretor de nomes.

Com a função capital_P_dangit() você garante que quando o nome “WordPress” possuir o W maiúsculo e o P minúsculo, seja corrigido para P maiúsculo. Veja abaixo um exemplo:

<?php
// Como este código está dentro do WordPress, ele automaticamente corrigiu o P minúsculo da frase abaixo. Então vou contar com sua imaginação para isso :D
$texto = "Estou utilizando o WordPress neste site.";
echo capital_P_dangit( $texto );
// Será exibido: Estou utilizando o WordPress neste site.
Code language: PHP (php)

Esta função é automaticamente aplicada nos seguintes lugares:

  1. the_content
  2. the_title
  3. wp_title
  4. document_title
  5. comment_text
  6. widget_text_content

Como desabilitar o capital_P_dangit() no WordPress

Se por algum motivo você precisar desabilitar esta função, é possível utilizar um plugin (como o Remove WordPress to WordPress filter) ou então adicionar o código abaixo no arquivo functions.php do seu tema:

<?php
// Desabilita o uso de capital_P_dangit() no conteúdo do site
remove_filter('the_content', 'capital_P_dangit', 11);
remove_filter('the_title', 'capital_P_dangit', 11);
remove_filter('wp_title', 'capital_P_dangit', 11);
remove_filter('document_title', 'capital_P_dangit', 11);
remove_filter('comment_text', 'capital_P_dangit', 31);
remove_filter('widget_text_content', 'capital_P_dangit', 11);
Code language: PHP (php)

Já vi alguns sites recomendando fazer a remoção desta função para deixar o seu site mais rápido, mas acredito que isto não irá fazer muita diferença na velocidade na maioria dos casos. Recomendo que, no lugar disso, sejam feitas otimizações mais impactantes, como a utilização de cache ou otimização do banco de dados.

Como criar seu próprio corretor de nomes no WordPress

Utilizando como base o código da função capital_P_dangit() e o seu uso nos filtros no arquivo wp-includes/default-filters.php, criei uma versão genérica da função para fazer a correção de um nome, dado um $nome_errado e um $nome_correto. Veja como ficou no código abaixo:

<?php
// Cria função para corrigir nome: "Painelwp" para "PainelWP"
function corrige_nome_painelwp( $texto ) {

	$nome_errado = "Painelwp";
	$nome_correto = "PainelWP";

	// Faz a alteração somente nos títulos
	$filtro_atual = current_filter();
	if ( 'the_title' === $filtro_atual || 'wp_title' === $filtro_atual ) {
		return str_replace( $nome_errado, $nome_correto, $texto );
	}

	// Se a função ainda não tiver finalizada, faz substituição mais cuidadosa,
	// tratando casos com os seguintes caracteres antes do nome: espaço,
	// aspas simples ('), aspas duplas (“, “ e ”) e <
	static $dblq = false;
	if ( false === $dblq ) {
		$dblq = _x( '&#8220;', 'opening curly double quote' );
	}

	return str_replace(
		array( ' '.$nome_errado, '&#8216;'.$nome_errado, $dblq . $nome_errado, '>'.$nome_errado, '('.$nome_errado ),
		array( ' '.$nome_correto, '&#8216;'.$nome_correto, $dblq . $nome_correto, '>'.$nome_correto, '('.$nome_correto ),
		$texto
	);
}

// Adiciona a correção do nome no conteúdo do WordPress
// da mesma maneira que é feito com o capital_P_dangit
foreach ( array( 'the_content', 'the_title', 'wp_title', 'document_title' ) as $filter ) {
	add_filter( $filter, 'corrige_nome_painelwp', 11 );
}
add_filter( 'comment_text', 'corrige_nome_painelwp', 31 );
add_filter( 'widget_text_content', 'corrige_nome_painelwp', 11 );
Code language: PHP (php)

Aviso importante: Estes códigos foram criados apenas para fins didáticos, por isso nem sempre possuem todas as melhores práticas de segurança e otimizações necessárias. Portando, não me responsabilizo pelo seu uso em qualquer tipo de ambiente ou dou qualquer tipo de garantia para eles. Se você desejar utilizá-los será por sua própria conta e risco.

Posts Similares

Você tem algo construtivo sobre este texto para dizer? Então comente abaixo