我正在尝试更改中为锚定标记显示的文本wp_nav_menu
李的。
实际上,我用jQuery做到了这一点,没有什么特别之处,因为我当然不是专业人士。您可以在此处看到基本代码:
jQuery(document).ready(function () {
jQuery(\'.menu-item-30 > a\').html(\'<i class="fas fa-home"></i>\');
});
它可以工作,此代码将在所需的导航菜单li中找到锚定标记,并将图标更改为主页的一个小房子。问题是,当我加载页面时,在加载房屋之前的最短一秒钟,我可以看到锚定标签中的原始文本,即“主页”,它看起来不专业。我想说的是,页面加载了,然后这段代码明显地在后面运行。
因此,我认为这可能是过滤器和挂钩发挥作用的地方。然而,据我所知,您不能用PHP包装jQuery并将其设置为过滤器,对吗?也许我只需要将jQuery中的“ready”改为其他内容。
因此,如何在两者之间更改文本<a>
和</a>
从“家”到<i class="fas fa-home"></i>
同时,让它在页面加载时加载,而不是在页面加载后加载?
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
实现这种效果的一种方法是wp_nav_menu_objects
钩
function modify_home_in_nav_menu_objects( $items, $args ) {
foreach ( $items as $k => $object ) {
// you can also target given page using this if:
// if ( \'page\' == $object->object && 2 == $object->object_id ) {
if ( 30 == $object->ID ) {
$object->title = \'<i class="fas fa-home"></i>\';
}
}
return $items;
}
add_filter( \'wp_nav_menu_objects\', \'modify_home_in_nav_menu_objects\', 10, 2 );
附:真的应该吗
fas
而不是
fa
在那里?