Instantly share code, notes, and snippets.
Created
July 5, 2013 22:49
Tags : META keywords for WordPress
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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