Je souhaite supprimer les balises, catégories de cours de Post Titles de mon blog WordPress. Sur l'interface, Wordpress génère des classes supplémentaires pour chaque titre d'article.
Par exemple, cet article a ces classes de titre d'article "category-tips-guides" "tag-indian-army", telles qu'elles apparaissent dans l'image suivante:
J'ai essayé l'extrait de code suivant pour supprimer des classes supplémentaires ( partagées sur cette page ) et cela fonctionne:
function lsmwp_remove_postclasses($classes, $class, $post_id) {
$classes = array_diff( $classes, array(
'hentry',
'type-' . get_post_type($post_id),
'status-' . get_post_status($post_id),
) );
return $classes;
add_filter('post_class', 'lsmwp_remove_postclasses', 10, 3);
Mais le problème avec ce code est qu'il ne supprime pas les classes Tag, Category comme je le souhaite.
Quelques références à post_class:
Essaye ça.
// **** Remove unwanted classes
function remove_classes($classes, $class, $post_id)
{
// Array that holds the undesired classes
$removeClasses = array(
'category-',
'tag-'
);
// Array to store the new class names
$newClasses = array();
foreach ($classes as $_class)
{
// Iterate through the array of undesired classes and
// check if the current $_class name starts with the
// undesired class name
$hasClass = FALSE;
foreach ($removeClasses as $_removeClass)
{
if (strpos($_class, $_removeClass) === 0)
{
$hasClass = TRUE;
break;
}
}
// If $_class does not contain an undesired class name,
// add it to the array of new class names.
if (!$hasClass)
{
$newClasses[] = $_class;
}
}
// Return the array of new class names
return ($newClasses);
}
add_filter('post_class', 'remove_classes', 10, 3);
Ce filtre déclare un tableau de noms de classe non désirés ($removeClasses
). Développez-le avec les noms de classe que vous ne voulez pas avoir.
Ensuite, la fonction parcourt le tableau de classes passé ($classes
) et vérifie si elle contient les classes que vous avez définies dans le tableau $removeClasses
. Sinon, il sera ajouté à un nouveau tableau ($newClasses
). Si oui, il le passera.
Enfin, il retourne le nouveau tableau $newClasses
.
Fondamentalement, il trie les classes que vous ne voulez pas. Et au lieu de manipuler le tableau $classes
passé, il en crée un nouveau avec uniquement les bonnes classes et le renvoie à la place.
Je ne l'ai pas testé cependant. Je n'ai pas d'installation WordPress disponible pour le moment. Il se peut que cela ne fonctionne pas, car post_class
pourrait ne pas être le bon filtre.
Bien entendu, vous devrez également supprimer tous les éléments de $classes
qui commencent par tag-
et category-
. La difficulté est qu’autre chose qu’avec type-
et status-
, il peut y avoir plusieurs instances.
Donc, vous devrez parcourir le tableau et supprimer toutes les instances commençant par ces chaînes:
foreach ($classes as $class) {
if (substr ($class, 0, 4) === "tag-") $class = '';
if (substr ($class, 0, 8) === "category-") $class = '';
}