WordPress SEO: Nome das categorias / taxonomias superiores na title tag

Num projecto WordPress que estamos a desenvolver, em que utilizamos o plugin WordPress SEO, tivemos necessidade de, na página de arquivo das categorias, colocar na title tag do website a lista de todas as categorias superiores da actual.

Por exemplo, para esta estrutura de categorias (a bold), as title tags seriam (a itálico):

  • Categoria 1: Categoria 1
    • Categoria 1.1: Categoria 1 – Categoria 1.1
      • Categoria 1.1.1: Categoria 1 – Categoria 1.1 – Categoria 1.1.1
    • Categoria 1.2: Categoria 1 – Categoria 1.2

Para obter este resultado, criámos uma nova variável de substituição no WordPress SEO, %%recursive_term_title%%, adicionando o seguinte código ao functions.php do nosso tema:

//Is WPSEO present and active?
if ( defined( 'WPSEO_VERSION' ) ) {

	add_action( 'wpseo_register_extra_replacements', 'register_wpseo_custom_extra_replacements' );
	function register_wpseo_custom_extra_replacements() {
		wpseo_register_var_replacement( '%%recursive_term_title%%', 'custom_wpseo_recursive_term_title', 'basic', 'Replaced by the term name and term parent names (recursively), if on category, tag or custom taxonomy archive' );
	}
	function custom_wpseo_recursive_term_title( $replacement ) {
		if ( is_category() || is_tag() || is_tax() ) {
			global $wp_query;
			$term=$wp_query->get_queried_object();
			return implode( ' %%sep%% ', custom_wpseo_term_title_array( $term, array() ) );
		}
	}

	//Recursive term title function
	function custom_wpseo_term_title_array( $term, $title, $i=0 ) {
		$title[$i]=trim( $term->name );
		$i++;
		if ( is_category() ) {
			//Category - Has parent?
			if ( $term->category_parent>0 ) {
				$parent_term=get_category( intval( $term->category_parent ) );
				$title=custom_wpseo_term_title_array( $parent_term, $title, $i );
			}
		} else {
			if ( is_tag() ) {
				//Tag - No parent
			} else {
				if ( is_tax() ) {
					//Custom taxonomy - Has parent?
					if ( $term->parent>0 ) {
						$parent_term=get_term( intval( $term->parent ), trim( $term->taxonomy ) );
						$title=custom_wpseo_term_title_array( $parent_term, $title, $i );
					}
				}
			}
		}
		//Return title array
		return $title;
	}

}

 
Funciona com categorias, taxonomias personalizadas e tags/etiquetas (apesar destas últimas não terem etiquetas superiores) e pode ser utilizada em conjunto com outras variáveis no ecrã de configuração de modelos de Títulos & Metas de taxonomias do WordPress SEO:

Recursive Term Title on WordPress SEO

A Webdados está ao seu dispor para fazer a análise e optimização para os motores de busca do seu site. Contacte-nos.


Actualização 2015-01-31: Passou a usar-se um array com os títulos das várias taxonomias que no fim é transformado em string com o separador %%sep%% (variável do WPSEO), para evitar eventuais problemas com a função preg_replace. Obrigado Luis Miguel Grave pela sugestão.

Ainda sem comentários.

Deixe um comentário

*

_