echo $ user-> role [0]; в меню навигации WordPress - PullRequest
1 голос
/ 24 июня 2019

В начале я хочу сказать, что весь код, представленный ниже, работает хорошо, если поместить его в правильную среду. У меня только проблема с php в меню навигации WordPress, которая, кажется, не в состоянии работать.

Я пытаюсь напечатать роль пользователя (есть только одна роль, которую пользователь может иметь одновременно) в раскрывающемся списке. Код PHP:

<?php
$user = wp_get_current_user();
echo $user->roles[0];   ?>

выпадающий код:

<ul id="primary-menu" class="navbar-nav ml-auto"><li class="nav-item    menu-item menu-item-type-gs_sim menu-item-object-gs_sim"><a href="" class="nav-link">(Untitled)<small class="description"></small></a><small class="description"><div class="dropdown show"><a href="" class="nav-link">
  </a><a class="nav-link btn btn-secondary dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
    <img src="http://ds.com/wp-content/uploads/ultimatemember/1/profile_photo-40x40.png?1561371663" class="gravatar avatar avatar-40 um-avatar um-avatar-uploaded" width="40" height="40" alt="pzo3xic" data-default="http://ds.com/wp-content/plugins/ultimate-member/assets/img/default_avatar.jpg" onerror="if ( ! this.getAttribute('data-load-error') ){ this.setAttribute('data-load-error', '1');this.setAttribute('src', this.getAttribute('data-default'));}"> pzo3xic
  </a>
  <div class="dropdown-menu show" aria-labelledby="dropdownMenuButton">
    <h6 class="dropdown-header" href="/user/">Paid Subscriber</h6>
<div class="dropdown-divider"></div>
    <a class="dropdown-item" href="/profile">View Profile</a>
<a class="dropdown-item" href="/private-lessons">Private Lessons</a>
<a class="dropdown-item" href="/logout">Log Out</a>
  </div>
</div></small></li>
<li class="nav-item    menu-item menu-item-type-taxonomy menu-item-object-category"><a href="http://ds.com/lessons/" class="nav-link">Lessons</a></li>
<li class="nav-item    menu-item menu-item-type-post_type menu-item-object-page"><a href="http://ds.com/tests/" class="nav-link">Tests</a></li>
</ul>

Я хочу представить его как показано ниже (где «Платный подписчик» - это имя роли пользователя):

example

Но когда я заменяю «Платного подписчика» на свой собственный короткий код «[print_user_role]», он как бы отображает текст вместо функции внутри. Позвольте мне отметить, что мой шорткод работает хорошо при добавлении в другие места.

what's going on

Проблема: Все аватары и выпадающие списки находятся в коде, добавленном через плагин Shortcode в Menus Этот плагин (и все остальные) не поддерживает php внутри.

Я попытался добавить шорткод в свой файл custom_functions.php, а затем вызвал его, вставив [my_custom_function_sc] в код, однако он ничего не возвращал.

Я потерял идеи о том, как добиться этого эффекта. Кто-нибудь из вас видит здесь возможное решение?

EDIT Я думаю, что я мог бы на самом деле напечатать роль пользователя где-то еще в пределах определенного блока, а затем с помощью jquery скопировать текст внутри блока и вставить в место, которое меня интересует. У кого-нибудь из вас есть идеи, как этого добиться? Я действительно не использовал javascript / jQuery.

Большое спасибо

1 Ответ

1 голос
/ 24 июня 2019

Ваш код кажется правильным, кроме этой строки -> echo $ user-> role [0];

Правильный код -> echo $ user-> role;

...