web-dev-qa-db-fra.com

Ajouter du HTML à un LI de wp_list_categories

J'utilise actuellement <?php wp_list_categories('child_of=4&title_li='); ?> pour afficher une liste de mes catégories. Je me demande comment je pourrais ajouter du HTML (en particulier un "à la fin de chaque LI dans le lien.

Voir cette capture d'écran pour un exemple de ce que j'essaie de faire:

http://nikibrown.com/uploads/4662272c3f00c669b17952c10d21901c.png

1
nikibrown

Je pense que c'est le moyen le plus propre et le plus WordPressiest de le faire:

<?php
$menu_args = array(
    'child_of' => '4',
    'title_li' => '',
    'link_after' => '&raquo;',
);
wp_list_categories($menu_args);
?>
8
beatenbyrobots

Utilisez le CSS: après la pseudo-classe.

Je sais que les pseudo-classes ne sont pas très populaires, mais elles fonctionnent maintenant dans tous les principaux navigateurs. Il n'y a aucune raison de ne pas les utiliser.

3
Otto

Il peut être plus logique de créer le style visuel souhaité en utilisant uniquement CSS. Cela permet de garder la présentation séparée de la génération de contenu.

li.cat-item { 
  background: url(../image/arrows.png) no-repeat;
}

Vous le savez peut-être déjà car vous utilisez déjà les paramètres, mais vous devrez bien sûr supprimer le "& title_li =" des paramètres pour conserver les hooks CSS.

2
3Easy

Voici la méthode que je ferais avec PHP str_replace:

<?php
$variable = wp_list_categories('child_of=4&echo=0&title_li=');
$variable = str_replace('</a>', ' »</a>', $variable);
echo $variable;
?>
2
Evan Yeung

Après de nombreuses recherches dans myselft, j'ai trouvé la réponse à cette question ici :

Pour résumer, le code pour ajouter un '>' à la fin de chaque catégorie est:

    <?php

    $taxonomy     = 'category taxonomy';
    $orderby      = 'name';
    $show_count   = 1;      // 1 for yes, 0 for no
    $pad_counts   = 0;      // 1 for yes, 0 for no
    $hierarchical = 1;      // 1 for yes, 0 for no
    $title        = '';
    $empty        = 0;

    $args = array(
      'taxonomy'     => $taxonomy,
      'orderby'      => $orderby,
      'show_count'   => $show_count,
      'pad_counts'   => $pad_counts,
      'hierarchical' => $hierarchical,
      'title_li'     => $title,
      'hide_empty'   => $empty
    );
    ?>

    <ul>
        <?php 
        $variable = wp_list_categories($args);
        $variable = str_replace('</a>', ' &gt;</a>', $variable);
        echo $variable; 
        ?>
    </ul>

J'espère que cela t'aides. La clé est le paramètre $ empty.

1
Daniel Hills

je dirais soit le css ou utiliser jQuery pour ajouter. Dites-le dans votre div # sidebar, vous pourriez faire quelque chose comme

$('#sidebar ul li a').append('&lt;span style="color:#ff0000;"&gt;htmlmarkuphere&lt;/ span&gt;'); 

et au moins être affiché en ligne et à l'intérieur de l'ancre. ou bien ajoutez au li pour l'obtenir après le a mais dans le li.

0
user2870