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.

1
pandglobal 20 listopad 2019, 23:23

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.

0
Snuwerd 25 listopad 2019, 15:26
Perfekcyjnie chcę kolejnej modyfikacji, kody działają, ale chcę dodać do niego zestaw instrukcji if, aby pokazać inną nazwę w oparciu o wartość meta użytkownika. powiedzmy, czy wyświetlana nazwa == jerry, zwróć '400'; jeśli Mary następnie pokaże 600, jeśli Donald pokaże 340, dodam przykładowy kod w tym bieżniku jako odpowiedź, ale jest zły, zgłasza błąd, pomóż to naprawić.
 – 
pandglobal
24 listopad 2019, 01:44
Myślę, że zbliżasz się do tego, co chciałem, ale potem funkcje nie działają, nadal wyświetla nazwę wyświetlaną użytkownikom zamiast liczb. Myślę, że ta część $user2[] nie działa
 – 
pandglobal
24 listopad 2019, 13:51
Robię to na polu typu rozwijanego, ale spróbuję na pojedynczym polu tekstowym, ale załóżmy, że pracujemy nad prostą funkcją logiczną, zwykle jest to user display = mary normalną rzeczą jest powrót użytkownika $user mary, ale tutaj zamiast zwracania mary zamienimy mary na 300 , a jesli użytkownikiem jest Jan zamienimy jana na 450
 – 
pandglobal
24 listopad 2019, 13:57
Widzisz, edytowałem post, to powinno działać. Wystarczy umieścić liczbę jako 'text' w tablicy. ps. Czy masz coś przeciwko oznaczeniu mojej odpowiedzi jako poprawnej, gdy działa dla Ciebie?
 – 
Snuwerd
24 listopad 2019, 14:20
Próbowałem, że to nie działa, po prostu dodało -1 do pola jako wartość domyślną, nic więcej się nie zmienia ... myślę, że użycie zestawu instrukcji if spowoduje zmianę wartości na podstawie wyświetlania użytkownika
 – 
pandglobal
24 listopad 2019, 20:14
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;

}

0
pandglobal 24 listopad 2019, 01:55
Moją misją jest to, że ponieważ jesteśmy w stanie uzyskać kod zwracający identyfikator bieżącego użytkownika i wyświetlaną nazwę, chciałbym go również bardziej rozciągnąć, aby kod mógł wyprowadzić wartość liczbową na podstawie aktualnej nazwy wyświetlanej użytkownika. powiedzmy, czy .$current_user->diplay == jerry zwraca wartość 400
 – 
pandglobal
24 listopad 2019, 02:00
Czy nie można edytować oryginalnego pytania? Jeśli możesz po prostu dodać „aktualizację”, pogrub go i dodaj to pod nim.
 – 
Snuwerd
24 listopad 2019, 02:10
Również w tym przykładzie nie zwracasz już obiektu $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)
 – 
Snuwerd
24 listopad 2019, 02:18
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;    
}
0
pandglobal 25 listopad 2019, 04:07
Próbowałem również usunąć drugą tablicę i zmodyfikować kod, zwraca tylko meta userpinn użytkownika, czyli mary, ale chcę przekonwertować jerry na 400 i Donald na 340 @snuwerd
 – 
pandglobal
25 listopad 2019, 04:11
Popracujmy nad powyższym kodem i pokażmy, co nie robię dobrze, pls
 – 
pandglobal
25 listopad 2019, 04:12
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

0
pandglobal 25 listopad 2019, 17:23
Teraz, ponieważ działa on z powyższym kodem, chciałbym, abyśmy dodali kurs walutowy Google API w tej kolumnie liczbowej, aby stawki były aktualizowane automatycznie, zamiast używać metody ręcznej do aktualizacji stawki @snumerd
 – 
pandglobal
25 listopad 2019, 17:30
Otwórz w tym celu nowe pytanie, to bardzo odbiega od pytania początkowego.
 – 
Snuwerd
25 listopad 2019, 17:31
Otworzyłem inne pytanie i oto link stackoverflow.com /pytania/59034541/…
 – 
pandglobal
25 listopad 2019, 17:56