2010-03-08 5 views
6

J'essaie de supprimer/remplacer l'attribut title sur les éléments de catégorie utilisés par WordPress. J'utilise WordPress 2.9.1, avec le code suivant:Suppression du titre de wp_list_categories()

<div id="categories"> 
    <h3>Manufacturers</h3> 
     <ul> 
      <?php str_replace("title=\"View all posts filed under ","",wp_list_categories('use_desc_for_title=0&exclude=1,2,3,4,5&title_li=&hierarchical=1')); ?> 
     </ul> 
</div> 

D'après ce que j'avais lu cette méthode utilisée pour travailler sur les anciennes versions (j'avais jamais essayé bien). Je ne veux vraiment pas pirater les interêts de WordPress, ou avoir à utiliser un hack JavaScript, pour quelque chose d'aussi simple. Toute aide est appréciée ...

Mise à jour ci-dessous est ce qui est créé à partir du code ci-dessus ...

<div id="categories"> 
<h3>Manufacturers</h3> 
<ul> 
<li class="cat-item cat-item-7"><a href="http://localhost/crosstrainers/?cat=7" title="View all posts filed under Featured">Featured</a> 
</li> 
</ul> 
</div> 
+0

Pouvez-vous préciser ce que vous entendez par "éléments de catégorie" pour les experts non-WP? –

+0

... et montrer une partie du code HTML incriminé? –

+0

Les catégories sont (facultativement) associées à des articles de blog, et lors de leur affichage à l'aide de wp_list_categories(), elles ajoutent un élément titre par défaut (par exemple title = "Voir tous les articles classés sous #category"). pour supprimer ou remplacer le titre – Alex

Répondre

9

Si vous ne souhaitez pas utiliser le plug-in, dépouillant le code de l'Remove Title Attributes plugin vous pouvez voir la fonction principale utilisée pour supprimer les titres des catégories ..

ouvrir votre template/fichier function.php et insérer ce qui suit ...

function wp_list_categories_remove_title_attributes($output) { 
    $output = preg_replace('` title="(.+)"`', '', $output); 
    return $output; 
} 
add_filter('wp_list_categories', 'wp_list_categories_remove_title_attributes'); 

cela va ajouter un nouveau filtre remplaçant le hors de la fonction wp_list_categories utilisée par wordpress et le remplacer par la fonction ci-dessus ..

dans votre exemple de code

<div id="categories"> 
    <h3>Manufacturers</h3> 
    <ul> 
     <?php wp_list_categories(); ?> 
    </ul> 
</div> 

génèrerait comme

<div id="categories"> 
     <h3>Manufacturers</h3> 
     <ul> 
      <li class="cat-item cat-item-7"><a href="http://localhost/crosstrainers/?cat=7">Featured</a></li> 
     </ul> 
    </div> 

avons été le title = "", a été dépouillé complètement .. :)

crédits: Tim Holt & his plugin

+0

Merci beaucoup !! Mais pourquoi use_desc_for_title = 0 ne fonctionne pas? http://codex.wordpress.org/Template_Tags/wp_list_categories – starikovs

0

Par défaut, wp_list_categories inclu de la description de catégorie dans l'attribut title s'il y en a un, ou "Voir tous les messages classés sous catégorie" s'il n'y a pas de description.

Je n'aime pas avoir toute la description là-dedans. Voilà ce que je me sers dans functions.php pour personnaliser l'attribut title:

function custom_categories_title($output) { 
    $search = '/title=".+"(.*>)(.+)</i'; 
    $replace = "title=\"View all articles filed under $2\"$1$2<"; 
    return preg_replace($search, $replace, $output); 
} 
add_filter('wp_list_categories', 'custom_categories_title'); 

Si vous voulez simplement supprimer le titre attribut tout à fait, vous pouvez utiliser

$search = '/ title=".+"/i'; 
    $replace = ''; 
3

Ceci est un peu réponse tardive sur un ancien poste, mais il y a une façon beaucoup plus simple qui ne nécessite pas de plug-ins ou en ajoutant à functions.php:

<?php wp_list_categories('title_li='); ?> 

ou, en cas d'utilisation avec d'autres customisations à la sortie:

<?php $args = array (
    'title_li'   => __(''), 
    'hide_empty'   => 0, 
    'show_count'   => 1, 
    'use_desc_for_title' => 0, 
    'child_of'   => 1 
); 
wp_list_categories($args); ?> 
0

Ceci est probablement votre meilleure option pour ceux qui cherchent à le faire sans aucune fonction.php work

Ajoutez simplement ceci à votre modèle.

   <ul class="nav"> 
        <?php wp_list_categories(array(
         'orderby' => 'name', 
         'taxonomy' => 'product_cat', 
         'depth' => 1, 
         'title_li' => '', 
         'hide_title_if_empty' => true, 
         'use_desc_for_title' => 0, 
         'include' => array(28, 27, 8, 29, 43, 31) 
        )); ?> 
       </ul> 
Questions connexes