Maison >Tutoriel CMS >WordPresse >Comment créer un menu de navigation thématique dans WordPress (2)

Comment créer un menu de navigation thématique dans WordPress (2)

青灯夜游
青灯夜游avant
2023-02-23 19:44:341912parcourir

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 !

Comment créer un menu de navigation thématique dans WordPress (2)

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.

1. Utilisez get_terms() pour obtenir la liste des catégories

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 4b2ef3503bbb115f3efa895a15c51196..bed06894275b65c1ab86501b08a632eb..a9112528d80b62da205f80db7832f6e2name.

2. Utilisez la méthode de lecture de la base de données pour obtenir la liste de classification

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 = &#39;category&#39;");
							
	if($cats) {
		foreach($cats as $cat) {
			echo &#39;<li><a href="&#39;.get_category_link($cat->term_id).&#39;" title="&#39;.$cat->name.&#39;">&#39;.$cat->name.&#39;</a></li>&#39;;
		}
 	}
?>		
</ul>

3. Comment obtenir l'identifiant de la catégorie actuelle

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(&#39;cat&#39;);
}

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(&#39;orderby=name&hide_empty=0&child_of=&#39; . $cat_id);
?> 
</ul>

     如果你的网站规模比较小,一个分类下的文章也不多,那么你可以在子导航中列出这个分类下的所有文章:

<ul>
	<?php
		global $wp_query;

		$query = array ( &#39;cat&#39; => $cat_id, &#39;orderby&#39; => title, &#39;order&#39;=> 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 &#39;class="chose"&#39;; ?> href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
	<?php endwhile; wp_reset_postdata(); endif; ?>
</ul>

     以上代码中用到了WP_Query来获取文章列表,该对象的使用方法,可以参考WordPress的官方文档:Class Reference/WP QueryFunction Reference/query posts。class="chose"用于高亮当前文章的菜单项,css规则你可以自己定义。

五、页面page的获取

     WordPress的页面page可以通过wp_list_pages()来列出,不过这个函数输出的HTML都是固定的,如果你想要自定义这些HTML,可以使用get_pages()来获取页面列表,代码示例如下:

<ul id="menu">
$mypages = get_pages();

if(count($mypages) > 0) {
    foreach($mypages as $page) {
        echo &#39;<li><a href="&#39;.get_page_link($page->ID).&#39;" title="&#39;.$page->post_title.&#39;">&#39;.$page->post_title.&#39;</a></li>&#39;;
    }
}
else {
    echo &#39;<li><a href="#">没有页面</a></li>&#39;;
}
</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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer