Передача параметра формы PHP HTML form

#php #html #wordpress #parameter-passing #gravity-forms-plugin

#php #HTML #wordpress #передача параметра #gravity-forms-плагин

Вопрос:

Я использую WordPress и плагин Gravity Forms и пытаюсь передать параметр от стороннего поставщика в форму Gravity с динамическим заполнением с другой страницы, используя приведенный ниже код

 <form method="post" name="goToForm" action="http://www.example.com/?page_id=123">
    <input type="hidden" name="param" value="Hello">
    <input type="submit" name="fromSubmit" value="Submit">
</form>
  

Обратите внимание, что приведенное выше http://www.example.com/?page_id=123 является URL-адресом формы Gravity.

самое близкое решение, которое я нашел, — это использование метода HOOK, но все же я хочу знать, как я могу вызвать пользовательскую функцию, созданную в functions.php с использованием подхода HOOK из post, и передать параметр.

Любые предложения будут оценены

Ответ №1:

Если я вас правильно понимаю, вы хотите передать параметры по URL формы?

Вы можете выполнить это двумя способами:

URL: http://www.example.com/?page_id=123

  1. Вы можете добавить скрытое поле в форму. В разделе дополнительно поля выберите Разрешить динамическое заполнение поля и добавьте имя параметра. Итак, например, я хочу получить page_id:

введите описание изображения здесь

После сохранения формы проверьте скрытое поле, и вы должны увидеть его значение как 123

  1. Вы можете добавить функцию перехвата:

    add_filter('gform_field_value_page_id', 'my_custom_population_function');
    function my_custom_population_function($value){
    return $value'; //or do what ever you want with it
    }

Если вы хотите автоматически добавить заголовок страницы или идентификатор в форму:

  1. Добавьте скрытое поле, в расширенном разделе поля добавьте это {embed_post:ID} (идентификатор записи) к значению по умолчанию. или

  2. Добавьте скрытое поле, в расширенной части поля добавьте это {embed_post:post_title} (Заголовок публикации) к значению по умолчанию.

Редактировать

Пользователь ищет http://www.gravityhelp.com/documentation/page/Gform_after_submission

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

Я не слишком уверен, что пользователь хотел бы сделать с параметром, поэтому я покажу пример отправки его стороннему поставщику:

  • Нам нужны номера наших полей ввода, чтобы мы могли получить правильные поля:

    /* Получение правильных номеров полей */ 
     add_action("gform_after_submission", "post_to_third_party", 10, 2);
    
    function post_to_third_party($entry, $form){
        // Lets get the IDs of the relevant fields and prepare an email message
        $message = print_r($entry, true);
        // In case any of our lines are larger than 70 characters, we should use wordwrap()
        $message = wordwrap($message, 70);
        // Send
        mail('you@domain.com', 'Getting the Gravity Form Field IDs', $message);
    } 
      

Вы должны получить что-то вроде этого по почте:

 Array
    (
        [id] => 64
        [form_id] => 5
        [date_created] => 2014-07-02 13:27:00
        [is_starred] => 0
        [is_read] => 0
        [ip] => ::1
        [source_url] => http://localhost/
        [post_id] =>
        [currency] => USD
        [payment_status] =>
        [payment_date] =>
        [transaction_id] =>
        [payment_amount] =>
        [payment_method] =>
        [is_fulfilled] =>
        [created_by] => 1
        [transaction_type] =>
        [user_agent] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3)
    AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153
    Safari/537.36
        [status] => active
        [1] => Name
        [4] => Parameter
    )
  

Где [1] => Name — поле Name, и я ввел Name для тестирования, а [4] => Parameter — поле parameter со значением параметра по умолчанию.

  • После того, как у нас будут правильные номера полей, мы сможем отправить его стороннему поставщику, в этом примере я использую curl:

    /* Отправка в thirdparty.com */ add_action("gform_after_submission", "post_to_third_party", 10, 2); функция post_to_third_party($entry, $form){ 
     //Submitting to thirdparty.com using curl
    function post_to_url($url, $data) {
         $fields = '';
         foreach($data as $key => $value) {
         $fields .= $key . '=' . $value . 'amp;';
         }
         rtrim($fields, 'amp;');
         $post = curl_init();
         curl_setopt($post, CURLOPT_URL, $url);
         curl_setopt($post, CURLOPT_POST, count($data));
         curl_setopt($post, CURLOPT_POSTFIELDS, $fields);
         curl_setopt($post, CURLOPT_RETURNTRANSFER, 1);
         curl_setopt($post, CURLOPT_HEADER, 1); //if you want headers
         curl_setopt($post, CURLOPT_HEADER, "Content-Type:application/xml");
         $result = curl_exec($post); 
    
         //If there's an error
    
         if($result === false)
            {
                echo "Error Number:".curl_errno($ch)."<br>";
                echo "Error String:".curl_error($ch);
         }
    
         curl_close($post);
    }
    
    if($form["id"] == 1){//Form ID
        //Lets get the fields to match submission to thirdparty.com
        $data = array(
             "FirstName" =>     $entry["1"],
             "ParameterName" =>     $entry["4"]
        );
    
            post_to_url("http://thirdparty.com", $data);
    }
      

    }

Если вы хотите, чтобы перехват работал для определенной формы gform_after_submission_1 , он будет работать только для формы с идентификатором 1.

Комментарии:

1. большое спасибо за вашу помощь, я уже создал скрытое поле и установил параметр, но я хочу отправить параметр и вызвать эту страницу (где существует форма gravity) с другой страницы, поэтому я подумал об использовании метода html form, как я объяснил выше. пожалуйста, обратите внимание, что расширение URL /?page_id=123 является WordPress сгенерированным и это ссылка на целевую страницу, а не параметр. Любые предложения будут оценены

2. О, хорошо, я вижу, есть способ сделать это. В качестве примера я использовал page_id. Я отредактирую свой ответ!

3. @user2079954 пожалуйста, посмотрите мою правку. Я не знаю, что вы хотите сделать с параметром, но gform_after_submission хук поможет вам получить значение

4. еще раз спасибо за вашу поддержку, пожалуйста, имейте в виду, что я собираюсь передать параметр от любого другого стороннего поставщика в gravity form, и для этого я попытался использовать html-форму для вызова gravity form и отправки параметра

5. @user2079954 Я не думаю, что есть какой-либо способ автоматической отправки формы gravity с параметром от стороннего поставщика. Похоже, вы хотите сохранить информацию, а с Gravity forms это невозможно, если вы не выполните над ней какое-то жесткое кодирование. Я настоятельно рекомендую написать скрипт на php для хранения информации и сохранить его в вашей базе данных, а затем добавить серверную страницу WordPress для просмотра сохраненных записей.