Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thom4parisot/5937716 to your computer and use it in GitHub Desktop.
Save thom4parisot/5937716 to your computer and use it in GitHub Desktop.
Tags : META keywords for WordPress
<?php
/*
* Petite vérification qui évite :
* - de générer une erreur le jour où une telle fonction est introduite
* - d'utiliser des ressources inutiles (dans l'admin, pas besoin de générer de balise keyword)
*/
if (!function_exists('get_all_tags_meta') && !is_admin()) :
/**
* get_all_tags_meta()
*
* Génère une entête META 'keywords' contenant les tags utilisés sur la page
*/
function get_all_tags_meta()
{
global $posts;
//$tags contiendra tous les tags trouvés par la suite
//Il est tout à fait envisageable de la pré-remplir à la main ou via les options de Wordpress (get_option())
$tags = array();
//On sort de la fonction si :
//- les posts n'existent pas (cas d'appel de fonction AVANT que the Loop soit effectuée
//- il n'y a aucun post (erreur 404, recherche infructueuse, catégorie/tag vide etc.)
if (!isset($posts) || empty($posts))
{
return false;
}
//On boucle sur chaque post disponible pour en extraire les tags
for ($posts_length = count($posts), $i = 0; $i < $posts_length; $i++)
{
//Comme il peut y avoir un ou plusieurs tag par post, là encore on boucle
//Les tags ne sont pas directement stockés dans $posts, il faut passer par l'API de taxinomie (wp_includes/taxonomy.php)
foreach (get_object_term_cache( $posts[$i]->ID, 'post_tag' ) as $tag)
{
$tags[] = $tag->name;
}
}
//Dédoublonnage du tableau final
$tags = array_unique($tags);
//On n'affiche l'entête que si elle n'est pas vide, voilà tout
if (!empty($tags))
{
printf('<meta name="%s" content="%s" />', 'keywords', implode(', ', $tags));
}
}
//On exécute la fonction sur le hook wp_head()
//On pourrait le faire sur wp_foot mais cette fonction n'est pas systématiquement incluses (à tort) sur tous les thèmes
add_action('wp_head', 'get_all_tags_meta');
endif;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment