自定义菜单项URL中的当前用户

时间:2015-02-05 作者:adriandegar

我在兼容的模板上使用S2Member+Buddypress。我有8个菜单项,正在使用“菜单项可见性控制”将第7个菜单项限制为仅用于查看current_user_is(s2member_level1) | in_array(\'administrator\', $GLOBALS[\'current_user\']->roles) 此可见性工作正常。

我需要一种创建自定义菜单项的方法,该菜单项将链接到包含以下结构的页面:

http://localhost/%%current_user_nicename%%/events/my-events/?action=edit
我不知道如何将当前用户名合并到URL中。我遇到过这个post:.

*如果我将自定义菜单项的URL留空,则必须有一个简单的修复方法。。我可以在代码的其他地方指定url吗?

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

恭喜你弄明白了。也许这也会起作用:

function change_menu($items){
  foreach($items as $item){

   if ($item-> post_name == \'the-slug\')/*replace "the-slug" with menu item post_name */
        $item->url = bp_loggedin_user_domain() . \'/events/my-events/?action=edit\';

  }
  return $items;

}
add_filter(\'wp_nav_menu_objects\', \'change_menu\');

SO网友:adriandegar

我用一个过滤函数解决了这个问题。这将找到与给定slug匹配的nav菜单对象,然后修改其URL。我在仪表板菜单中留下了带有可见性控制的菜单项。URL最初为空。

添加到函数。php:


function getUN()
{
    global $current_user;
      get_currentuserinfo();

      return  $current_user->user_login;
}

function change_menu($items){
  foreach($items as $item){

if ($item-> post_name == \'the-slug\')/*replace "the-slug" with menu item post_name */
{
    $item->url = get_site_url().\'/members/\'.getUN().\'/events/my-events/?action=edit\';

  }
  }
  return $items;

}

add_filter(\'wp_nav_menu_objects\', \'change_menu\');

结束

相关推荐

BuddyPress BP_CORE_ADD_MESSAGE()为什么不触发?

好的,我有下面的php,它运行正常,直到IF,但无论我做什么,我都无法让bp\\U核心消息在屏幕上激发,它只会给我保存的更改消息。。。为什么我做错了什么! function valid_postcode ($self) { $getFieldID = $self->field_id; $PostCodeFieldID = 23; $postcodecheck = $_POST[\'field_23\']; if ( $getFieldI