add_filter( 'gravityflow_assignee_field_users', 'sh_gravityflow_assignee_field_users', 10, 3 );
function sh_gravityflow_assignee_field_users( $users, $form_id, $field ) {
$users = array(
array( 'value' => 'user_id|2', 'text' => 'Joe' ),
array( 'value' => 'user_id|3', 'text' => 'Jane' ),
);
return $users;
}
Chcę dołączyć bieżący identyfikator użytkownika i nazwę użytkownika, aby znajdować się na pierwszej liście lub pierwszym wyborze w tym polu tablicy, lub jeszcze lepiej wyprowadzić tylko bieżący identyfikator użytkownika i nazwę użytkownika w tablicy lub liście rozwijanej, więc jeśli użytkownicy logują się do jego nazwy będzie tylko opcją do wyboru z tablicy. jeśli mogę uzyskać jedną tablicę lub opcję bieżącego użytkownika, będę dobry.
4 odpowiedzi
Zobacz, czy wp_get_current_user()
działa, aby uzyskać użytkownika w Twojej funkcji?
$current_user = wp_get_current_user();
// $current_user->user_login
// $current_user->user_email
// $current_user->user_firstname
// $current_user->user_lastname
// $current_user->display_name
// $current_user->ID
Od https://codex.wordpress.org/Function_Reference/wp_get_current_user
Więc prawdopodobnie będzie to wyglądać tak:
add_filter( 'gravityflow_assignee_field_users', 'sh_gravityflow_assignee_field_users', 10, 3 );
function sh_gravityflow_assignee_field_users( $users, $form_id, $field ) {
$current_user = wp_get_current_user();
$users = array(
array( 'value' => 'user_id|'.$current_user->ID, 'text' => $current_user->display_name),
array( 'value' => 'user_id|2', 'text' => 'Joe' ),
array( 'value' => 'user_id|3', 'text' => 'Jane' ),
);
return $users;
}
Aktualizuj Miałem błąd w kodzie.
Aktualizuj
Nie wiem dokładnie, czego potrzebujesz (co nie jest dobrą rzeczą, nie powinienem zgadywać). Ale to może być to, czego potrzebujesz. Twój przykład nie może być poprawny, ponieważ zwracałeś teraz liczbę zamiast tablicy $users
.
Dla każdego użytkownika na liście poniższy kod zmienia zawartość pola 'text'
o określoną liczbę w zależności od wyświetlanej nazwy użytkownika.
add_filter( 'gravityflow_assignee_field_users', 'sh_gravityflow_assignee_field_users', 10, 3 );
function sh_gravityflow_assignee_field_users( $users, $form_id, $field ) {
$current_user = wp_get_current_user();
$users = array(
array( 'value' => 'user_id|'.$current_user->ID, 'text' => $current_user->display_name),
array( 'value' => 'user_id|2', 'text' => 'Joe' ),
array( 'value' => 'user_id|3', 'text' => 'Jane' ),
);
$users2 = [];
foreach ($users as $user) {
$number = -1;
switch ($user['text']) {
case "Joe":
$number = 400;
break;
case "Jane":
$number = 600;
break;
case "Donald":
$number = 340;
break;
default:
break;
}
$user['text'] = $number;
array_unshift($users2, $user);
}
return $users2;
}
Aktualizuj
Moje przeprosiny, traktowałem $ user jako obiekt zamiast tablicy asocjacyjnej, więc $user->text
musi być $user['text']
. Zmieniono kod.
add_filter( 'gravityflow_assignee_field_users', 'sh_gravityflow_assignee_field_users', 10, 3 );
function sh_gravityflow_assignee_field_users( $users, $form_id, $field ) {
$current_user = wp_get_current_user();
$users = array(
array( 'value' => 'user_id|'.$current_user->ID, 'text' => $current_user->display_name),
array( 'value' => 'user_id|2', 'text' => 'Joe' ),
array( 'value' => 'user_id|3', 'text' => 'Jane' ),
);
if ($users == jerry) {
return 400;
if ($users == Mary) {
return 600;
if ($users == Donald) {
return 340;
}
$users
, ale tylko liczbę. Czy to jest poprawne? Gdzie ma być numer? Jako część tablicy należącej do użytkownika? array( 'value' => 'user_id|'.$current_user->ID, 'text' => $current_user->display_name, 'number' => 400)
add_filter( 'gform_field_value_bank20_code', 'my_custom_population_shownumber2' );
function my_custom_population_shownumber2( $value ) {
$current_user = wp_get_current_user();
$users = $current_user->PROCESSOR;
$users2 = [];
foreach ($users as $users2) {
$number = -1;
switch ($user->text) {
case "jerry":
$number = 400;
break;
case "Mary":
$number = 600;
break;
case "Donald":
$number = 340;
break;
default:
break;
}
$user['text'] = $number;
array_unshift($users2, $user);
}
return $users2;
}
add_filter( 'gform_field_value_bank20_code', 'my_custom_population_showcountry' );
function my_custom_population_showcountry( $value ) {
$current_user = wp_get_current_user();
$users = $current_user->PROCESSOR;
// For the country Afghanistan
if( $current_user->PROCESSOR == 'Afghanistan' )
$users = ( '500' );
// For the country Albania
if( $current_user->PROCESSOR == 'Albania' )
$users = ( '600' );
// For the country Algeria
if( $current_user->PROCESSOR == 'Algeria' )
$users = ( '600' );
// For the country American Samoa
if( $current_user->PROCESSOR == 'American Samoa' )
$users = ( '600' );
return $users;
}
To jest doskonały sposób, w jaki udało mi się go uruchomić z powyższym kodem. Teraz wszystko działa dobrze. Dzięki za poświęcony czas
Podobne pytania
Nowe pytania
php
PHP to szeroko stosowany, wysokopoziomowy, dynamiczny, zorientowany obiektowo i interpretowany język skryptowy przeznaczony głównie do tworzenia stron WWW po stronie serwera. Używane w przypadku pytań dotyczących języka PHP.
'text'
w tablicy. ps. Czy masz coś przeciwko oznaczeniu mojej odpowiedzi jako poprawnej, gdy działa dla Ciebie?