#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
- Вы можете добавить скрытое поле в форму. В разделе дополнительно поля выберите Разрешить динамическое заполнение поля и добавьте имя параметра. Итак, например, я хочу получить page_id:
После сохранения формы проверьте скрытое поле, и вы должны увидеть его значение как 123
-
Вы можете добавить функцию перехвата:
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
}
Если вы хотите автоматически добавить заголовок страницы или идентификатор в форму:
-
Добавьте скрытое поле, в расширенном разделе поля добавьте это
{embed_post:ID}
(идентификатор записи) к значению по умолчанию. или -
Добавьте скрытое поле, в расширенной части поля добавьте это
{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 для просмотра сохраненных записей.