Maison > Questions et réponses > le corps du texte
Ma première tentative d'intégration de Bootstrap 5.2 dans un site WordPress (ce n'est qu'un test local). Je le fais avec ce wp-bootstrap-walker que j'ai trouvé : https://github.com/wp-bootstrap/wp-bootstrap-navwalker/
J'ai ajouté le fichier "/class-wp-bootstrap-navwalker.php" mentionné dans le guide d'installation à function.php :
function register_navwalker(){ require_once get_template_directory() . '/class-wp-bootstrap-navwalker.php'; } add_action( 'after_setup_theme', 'register_navwalker' ); register_nav_menus( array( 'primary' => __( 'Main header menu', 'mytheme' ), ) );
Afin d'utiliser la version 5, j'ai également modifié ceci :
'walker' => new WP_Bootstrap_Navwalker(), + 'walker' => 'WP_Bootstrap_Navwalker',
Donc aucune erreur n'est affichée jusqu'ici, et dans le backend WordPress, je peux sélectionner le menu "Main Title Menu" défini dans function.php, le problème est que lorsque je sélectionne cette option et que je vais à la page d'accueil, alors tout plante :
: Uncaught Error: Call to a member function walk() on string in C:laragonwwwmydirectorywp-includesnav-menu-template.php:622 Stack trace: #0 C:laragonwwwmydirectorywp-includesnav-menu-template.php(242): walk_nav_menu_tree(Array, 2, Object(stdClass)) #1 C:laragonwwwmydirectorywp-contentthemesmy-themeheader.php(61): wp_nav_menu(Object(stdClass)) #2 C:laragonwwwmydirectorywp-includestemplate.php(783): require_once('C:\laragon\www\...') #3 C:laragonwwwmydirectorywp-includestemplate.php(718): load_template('C:\laragon\www\...', true, Array) #4 C:laragonwwwmydirectorywp-includesgeneral-template.php(48): locate_template(Array, true, true, Array) #5 C:laragonwwwmydirectorywp-contentthemesmy-themeindex.php(8): get_header() #6 C:laragonwwwmydirectorywp-includestemplate-loader.php(106): include('C:\laragon\www\...') #7 C:laragonwwwmydirectorywp-blog-header.php(19): require_once('C:\laragon\www\...') #8 C:laragonwwwmydirectoryindex.php(17): require('C:\laragon\www\...') #9 {main} thrown in
P粉6931261152024-01-17 10:17:31
Je l'ai résolu en écrivant ceci :
function register_navwalker(){ require_once get_template_directory() . '/class-wp-bootstrap-navwalker.php'; } add_action( 'init', 'register_navwalker' );
J'ai écrit init au lieu de after_setup_theme pour exécuter la fonction, et l'utilisation de wp_loaded a bien fonctionné.