Adding PHP in the menu

时间:2015-05-27 作者:Steve Kim

所以,我有以下几点php 代码:

<?php global $my_profile; ?>
<?php if (is_user_logged_in()) : ?>
    <div class="img" data-key="profile"><?php echo get_avatar( get_current_user_id(), 64 ); ?></div>
<?php endif; ?>
它提取当前登录用户的配置文件图片。我正在尝试将其添加到菜单项标题中,以便将用户配置文件图片显示为菜单的一部分。

看起来我无法直接将此代码添加到menu.

将此添加到菜单标题中的最佳方式是什么?

谢谢

史蒂夫

2 个回复
最合适的回答,由SO网友:Brad Dalton 整理而成

添加到函数文件并使用wp_nav_menu_items

add_filter(\'wp_nav_menu_items\',\'wpsites_add_avatar_to_nav\', 10, 2);
function wpsites_add_avatar_to_nav( $items, $args ) {
    if( $args->theme_location == \'primary\' )
    return $items;    

    $dude = get_avatar( get_current_user_id(), 48 );

    if (is_user_logged_in()) : 
    echo\'<li class="your-custom-class right">\' . $dude . \'</li>\';
    endif;

    return $items;
}
可能需要使用output buffering.

需要代表您进行一些工作才能使代码使用此筛选器。您需要根据使用的主题更改类。

SO网友:mishu

您可以尝试以下操作:

<?php global $my_profile; ?>
<?php if (is_user_logged_in()){
    $avatar = \'<div class="img" data-key="profile">\'.get_avatar( get_current_user_id(), 64 ).\'</div>\';
}else{
    $avatar = \'\';  
}  ?>
你的菜单代码应该是这样的

$defaults = array(
    \'theme_location\'  => \'location of menu in your theme\',
    \'menu\'            => \'slug\',
    \'container\'       => \'div\',
    \'menu_class\'      => \'menu\',
    \'echo\'            => true,
    \'fallback_cb\'     => \'wp_page_menu\',
    \'items_wrap\'      => $avatar.\'<ul id="%1$s" class="%2$s">%3$s</ul>\',
);

wp_nav_menu( $defaults );
根据您的要求填写所有参数。有关参数的完整列表,请查看此页https://codex.wordpress.org/Function_Reference/wp_nav_menu

结束

相关推荐

使用子主题的函数向主题添加自定义函数。php

我正在使用一个主题Indigo 并使其在子主题配置中正常工作。我想添加一个自定义函数。与子样式不同。css,我读到您不需要导入父函数。php。但是,当我将自己的函数添加到空白文件时,函数。php在子主题文件夹中,我的页面无法正确加载,并且我看到了子函数中的文本。php。我在这里看到的解决方案要求父功能。php具有可以重写的函数。我的选择是什么?我想要我的定制,但我不想通过主题更新来阻止它们。这就是我想顺道拜访的。。。/** * Disable admin bar on the frontend