WordPress : Vous ne souhaitez pas afficher une catégorie aléatoire. Je veux en exclure quelques-unes ou faire en sorte que la publication n’affiche que la catégorie que je veux
Je suis coincé dans une situation étrange en ce moment. J’ai donc mes articles wordpress qui appartiennent à plusieurs catégories. par exemple un de mes messages appartient à deux catégories. L’une est la catégorie « Actualités » et l’autre est « Top Bar ». (Je l’utilise pour attribuer des articles à la zone d’en-tête des articles qui récupère ses articles dans la catégorie « Top Bar ».
Le problème auquel je suis confronté est que je souhaite afficher uniquement le nom de la catégorie « Actualités » sur le bloc de publication. En ce moment, il sélectionne au hasard l’un des noms de la catégorie sélectionnée dans la liste et l’affiche. Chaque fois que j’actualise la page, le bloc de publication affiche le nom de l’un des deux. Je veux juste montrer le principal qui s’appelle « Actualités ».
Maintenant, si vous visitez ce lien http://thexpatt.com/news , le titre de la catégorie de messages sera News avec certains d’entre eux montrant les meilleures nouvelles. si vous continuez à rafraîchir la page, le titre changeait constamment. En réalité, tous ces messages ont la catégorie Top News ainsi que la catégorie des nouvelles.
Je joins une capture d’écran pour votre compréhension. J’ai rafraîchi la page plusieurs fois. Remarquez la différence dans les blocs de noms d’affichage des catégories sur les publications.
Mon thème appelant l’une des catégories sélectionnées au hasard. Si oui, comment puis-je faire en sorte qu’il n’appelle que le premier ou comment exclure certaines catégories de la sélection.
ÉDITÉ
Le code que j’ai trouvé dans post.php
indique même un ID aléatoire. comment puis-je changer cela?
$postCategories = get_the_category($post->ID);
$slug = '';
foreach($postCategories as $catSlug) {
$slug.= $catSlug->slug." ";
}
$categories = wp_get_post_categories($post->ID);
if(!empty($categories)){
$catCount = count($categories);
**//select a random category id**
$id = rand(0,$catCount-1);
//cat id
$catId = $categories[$id];
} else {
$catId = false;
}
OU AIDE vérifiez si la catégorie principale de levure est sélectionnée et imprimez-la. Le code d’inclusion de la catégorie Yoast ressemble à ceci. (Comme trouvé sur Internet).
$primary_cat_id=get_post_meta($product>id,'_yoast_wpseo_primary_product_cat',true);
if($primary_cat_id){
$product_cat = get_term($primary_cat_id, 'product_cat'); if(isset($product_cat->name))
echo $product_cat->name; }
Merci beaucoup.
Solution n°1 trouvée
Je dirais root si le problème est que cette catégorie n’est pas destinée à servir ce type d’objectif fonctionnel. Les catégories sont purement un mécanisme de regroupement , mais elles n’ont aucun concept de ces groupes étant fonctionnellement différenciés .
Pourtant, c’est ce que vous avez déjà en place.
Sans changer la façon dont les catégories sont utilisées, j’ajusterais le modèle d’archive de catégorie au nom de sortie de l’archive actuelle au lieu des catégories de chaque message individuel.
Cela permettrait d’atteindre le cas d’utilisation souhaité (tout sur /news
dit News
) et serait moins sujet aux changements au fil du temps que la microgestion de la sortie des catégories de publication.
Solution n°2 trouvée
Vous pouvez utiliser ce code dans votre functions.php
pour masquer la catégorie TopBar.
function the_category_filter($thelist,$separator=' ') {
if(!defined('WP_ADMIN')) {
//list the category names to exclude
$exclude = array('TopBar');
$cats = explode($separator,$thelist);
$newlist = array();
foreach($cats as $cat) {
$catname = trim(strip_tags($cat));
if(!in_array($catname,$exclude))
$newlist[] = $cat;
}
return implode($separator,$newlist);
} else
return $thelist;
}
add_filter('the_category','the_category_filter',10,2);
Solution n°3 trouvée
Orange Ce support a répondu à ma question. Si quelqu’un d’autre est confronté à une situation similaire, utilisez cette méthode pour corriger le correctif de plusieurs catégories du thème Solidus. Merci
Pour configurer une seule catégorie sélectionnée pour le bloc d’actualités, vous devrez trouver dans les fichiers solidus-themeincludeshome-blocks des lignes comme celles-ci :
$categories = get_the_category($my_query->post->ID);
$catCount = count($categories);
//select a random category id
$id = rand(0,$catCount-1);
//cat id
$catId = $categories[$id]->term_id;
et remplacer par des lignes comme
if(is_array($cat)) {
$categories = get_the_category($my_query->post->ID);
$catCount = count($categories);
//select a random category id
$id = rand(0,$catCount-1);
//cat id
$catId = $categories[$id]->term_id;
} else {
$catId = $cat;
}
Alors, que feront ces lignes, au cas où le bloc de la page d’accueil n’aurait qu’une seule catégorie sélectionnée, alors il n’en affichera qu’une seule, mais si vous aurez sélectionné plusieurs catégories, il s’affichera au hasard comme avant. Mais dans le cas où une publication aura plusieurs catégories et que vous en aurez sélectionné une pour le bloc, elle n’en affichera qu’une seule.
0 commentaire