Je vous ai présenté "Comment créer un menu de navigation thématique dans WordPress (1)". Cet article continuera à vous présenter comment créer un menu de navigation thématique dans WordPress. J'espère qu'il vous sera utile !
Le tutoriel précédent expliquait comment utiliser les fonctions intégrées de WordPress pour créer un menu de navigation, mais les codes HTML générés par ces fonctions sont fixes, et il vous est difficile de définir le code HTML du menu de navigation. Cet article vous présentera quelques façons plus libres de créer des menus de navigation qui peuvent être utilisés pour plus que de simples menus de navigation. Bien entendu, cet article ne vous donne qu’une idée pour résoudre le problème. Ce n’est pas un tutoriel comme une recette. Une fois que vous l’avez lu et copié, vous pouvez l’utiliser dans votre projet.
Utilisez get_terms() pour obtenir vos catégories d'articles, catégories de liens, catégories personnalisées, etc. Passer les paramètres correspondants à get_terms() peut vous renvoyer un objet array. Ce tableau contient toutes les catégories que vous souhaitez. Voici le prototype de fonction de get_terms() :
<?php get_terms( $taxonomies, $args ) ?>
$taxonomies :
Ce paramètre est la catégorie de classification que vous souhaitez obtenir. "category", "link_category", "my_taxonomy", ils représentent respectivement la catégorie d'article, la catégorie de lien et votre catégorie personnalisée, où my_taxonomy est le nom de votre catégorie personnalisée.
$args :
Ce paramètre est le paramètre de filtrage de la catégorie. Il est utilisé pour contrôler l'acquisition de la catégorie que vous souhaitez obtenir, y compris le nombre de catégories que vous souhaitez obtenir, la manière de trier, la catégorie parent et. s'il faut afficher des catégories vides, etc. Pour plus de détails, veuillez vous référer à la documentation officielle de WordPress : Référence de fonction/obtenir les termes, ou reportez-vous à la brève traduction en chinois : Fonctions-get_terms() couramment utilisées()
Ce qui suit est un exemple d'utilisation de cette fonction, où un
<ul id="menu"> <?php // 获取分类 $terms = get_terms('category', 'orderby=name&hide_empty=0' ); // 获取到的分类数量 $count = count($terms); if($count > 0){ // 循环输出所有分类信息 foreach ($terms as $term) { echo '<li><a href="'.get_term_link($term, $term->slug).'" title="'.$term->name.'">'.$term->name.'</a></li>'; } } ?> </ul>
La fonction get_terms() renvoie un tableau d'objets $terms, On détermine d'abord si le tableau est vide. S'il est vide, cela signifie qu'aucune classification n'a été obtenue. Si ce n'est pas le cas. vide, vous pouvez alors afficher la classification. Chaque élément du tableau de $terms est un objet. Les significations de certains attributs d'objet sont : slug : abréviation de la catégorie, name : nom de la catégorie, term_id : identifiant de la catégorie. Comme indiqué dans le code ci-dessus, vous pouvez obtenir la valeur d'attribut de l'objet via $term->name.
Si vous connaissez la base de données WordPress, vous pouvez constater que les informations de classification WordPress sont stockées dans les deux tables wp_terms et wp_term_taxonomy. classification des articles, balises d'articles et catégories de liens, etc.), wp_term_taxonomy est utilisé pour stocker des descriptions supplémentaires (utilisé pour stocker des descriptions, distinguer des catégories et des balises, etc.). Nous pouvons utiliser SQL pour obtenir la liste des catégories que nous voulons à partir de ces deux tables :
<ul id="menu"> <?php $cats = $wpdb->get_results("SELECT {$wpdb->prefix}terms.term_id, name FROM {$wpdb->prefix}term_taxonomy, {$wpdb->prefix}terms WHERE {$wpdb->prefix}term_taxonomy.term_id = {$wpdb->prefix}terms.term_id AND taxonomy = 'category'"); if($cats) { foreach($cats as $cat) { echo '<li><a href="'.get_category_link($cat->term_id).'" title="'.$cat->name.'">'.$cat->name.'</a></li>'; } } ?> </ul>
Parfois, nous devons faire une sous-navigation, comme http://www.nashowgroup.com/?p=58&lang=zhLa navigation des ressources humaines sur la gauche. Cette navigation peut être n'importe quel élément, tel que des sous-catégories dans la catégorie actuelle ou des articles dans la catégorie actuelle, etc. La première question est donc de savoir comment obtenir l’identifiant de la catégorie actuelle afin que nous puissions passer à l’étape suivante.
Récupérez l'identifiant de la catégorie actuelle sur la page de la catégorie :
if ( is_category() ) { $cat_id = get_query_var('cat'); }
Récupérez la première catégorie de l'article sur la page de l'article :
$cats = get_the_category(); if($cats) $cat_id = $cats[0]->cat_ID;
上面我们讲解了如何获取当前分类的id,下面我们来讲讲如何制作子导航。首先,我们来制作一个当前分类下子分类的子导航,这里用到wp_list_categories()来列出子分类,当然你可以用我前面介绍的两种方法来获取分类。:
<ul> <?php // 这里我们用到上面获取到的$cat_id,获取该分类下的所有子分类 wp_list_categories('orderby=name&hide_empty=0&child_of=' . $cat_id); ?> </ul>
如果你的网站规模比较小,一个分类下的文章也不多,那么你可以在子导航中列出这个分类下的所有文章:
<ul> <?php global $wp_query; $query = array ( 'cat' => $cat_id, 'orderby' => title, 'order'=> ASC ); $queryObject = new WP_Query($query); if ($queryObject->have_posts()) : while ($queryObject->have_posts()) : $queryObject->the_post(); ?> <li><a <?php if($post->ID == $wp_query->post->ID) echo 'class="chose"'; ?> href="<?php the_permalink() ?>"><?php the_title(); ?></a></li> <?php endwhile; wp_reset_postdata(); endif; ?> </ul>
以上代码中用到了WP_Query来获取文章列表,该对象的使用方法,可以参考WordPress的官方文档:Class Reference/WP Query和Function Reference/query posts。class="chose"用于高亮当前文章的菜单项,css规则你可以自己定义。
WordPress的页面page可以通过wp_list_pages()来列出,不过这个函数输出的HTML都是固定的,如果你想要自定义这些HTML,可以使用get_pages()来获取页面列表,代码示例如下:
<ul id="menu"> $mypages = get_pages(); if(count($mypages) > 0) { foreach($mypages as $page) { echo '<li><a href="'.get_page_link($page->ID).'" title="'.$page->post_title.'">'.$page->post_title.'</a></li>'; } } else { echo '<li><a href="#">没有页面</a></li>'; } </ul>
-- 完 --
推荐学习:《WordPress教程》
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!