вам дали выше ссылку на руководство, вот его и используйте. Примерно получится так
add_filter('tab_data_rcl','edit_partners_tab_data'); function edit_partners_tab_data($data){ if($data['id']!='partners') return $data; //тут проверка роли пользователя //если для этой роли вкладку показываем, то return $data //иначе return false; }
Когда в таком виде создал то не ругается на ошибки но все равно результат тот же:
function poluchit_rol_tecushego_polzovatelya() {
global $current_user;
$rol_polzovatelya = $current_user->roles[0];
return $rol_polzovatelya;
}
add_filter('tab_data_rcl','edit_partners_tab_data');
function edit_partners_tab_data($data){
if($data['id']!='partners') return $data;
if($rol_polzovatelya['id']!='businessman') return $data;
return false;
}
Вы вообще сами понимаете, что происходит в коде который вы привели?
Так будет более верно:
function get_wp_user_role() { global $current_user; return $current_user->roles[0]; } add_filter('tab_data_rcl','edit_partners_tab_data'); function edit_partners_tab_data($data){ //тут пишем название роли для которой вкладка показывается if(get_wp_user_role()=='businessman') return $data; return false; }
значит делаем так
function get_wp_user_role() { global $current_user; return $current_user->roles[0]; } add_filter('tab_data_rcl','edit_partners_tab_data'); function edit_partners_tab_data($data){ //тут пишем название роли для которой вкладка показывается if(get_wp_user_role()=='businessman') return $data; $data['args']['public'] = 0; return $data; }
Покажу то что есть в файле
function get_wp_user_role() {
global $current_user;
return $current_user->roles[0];
}
add_filter('tab_data_rcl','edit_partners_tab_data');
function edit_partners_tab_data($data){
if(get_wp_user_role()=='businessman') return $data;
$data['args']['public'] = 0;
return $data;
}
Я проанализировал код плагина и пришел к мнению, что для того, чтобы грамотно, без костылей скрыть одну из вкладок личного кабинета от всех необходимо доработать код самого ядра.
Делаете вот, что:
1. открываете файл плагинаwp-recall/rcl-functions.php, на строке 24, найдете функцию rcl_tab(), внутри нее, сразу после
if($name) $data = apply_filters('tab_data_rcl',$data);
добавляете
if(!$data) return false;
2. после этого добавляете код, уже в файл функций своего шаблона, вместо того, что добавляли ранее:
function get_wp_user_role() { global $current_user; return $current_user->roles[0]; } add_filter('tab_data_rcl','edit_partners_tab_data'); function edit_partners_tab_data($data){ if($data['id'] != 'partners') return $data; //тут пишем название роли для которой вкладка показывается if(get_wp_user_role()=='businessman') return $data; return false; }
Переустанавливал полностью вордпресс потому что залагал. И на чистом все попробовал сделать (последнее) опять и теперь пишет :
Fatal error: Uncaught Error: Function name must be a string in /home/u411089459/public_html/wp-content/plugins/wp-recall/functions/rcl_tabs.php:177 Stack trace: #0 /home/u411089459/public_html/wp-content/plugins/wp-recall/functions/rcl_tabs.php(87): rcl_callback_tab_func(NULL, 2) #1 /home/u411089459/public_html/wp-includes/plugin.php(235): Rcl_Tabs->add_tab('', 2) #2 /home/u411089459/public_html/wp-content/plugins/wp-recall/functions/rcl-frontend.php(207): apply_filters('the_block_wprec...', '', 2) #3 /home/u411089459/public_html/wp-content/plugins/wp-recall/templates/cabinet.php(44): rcl_tabs() #4 /home/u411089459/public_html/wp-content/plugins/wp-recall/rcl-functions.php(104): include('/home/u41108945...') #5 /home/u411089459/public_html/wp-content/plugins/wp-recall/wp-recall.php(337): rcl_include_template('cabinet.php') #6 /home/u411089459/public_html/wp-content/plugins/wp-recall/functions/shortcodes.php(214): wp_recall() #7 /home/u411089459/public_html/wp-includes/shortcodes.php(326): rcl_get_shortcode_wp_recall('', ' in /home/u411089459/public_html/wp-content/plugins/wp-recall/functions/rcl_tabs.php on line 177
Предлагаю подумать, чтобы условия прописать в самом значении ф-ции get_ref_url() если это реально
Для начала в файле функции шаблона я добавил :
function get_wp_user_role() {
global $current_user;
return $current_user->roles[0];
}
Теперь нужно сделать чтобы get_ref_url() показывался только для роли "businessman", а в идеале если не указанная роль то писалось "Доступа для просмотра нет"
Подскажите, где прописаны условия функции get_ref_url() ?