Tell us what you are trying to do?
I have a CRED form and I try to check, if a select field is not set / empty. If it's not set / empty, it should automatically assign a value during CRED form submission. I used the same code already for single text field and datepicker ... but here it doesn't work.
The code:
add_action('cred_before_save_data', 'func_set_select_field',10,1);
function func_set_select_field($form_data)
{
// if a specific form
$forms = array( 10441 , 12961 );
if (in_array($form_data['id'], $forms))
{
// if value of wpcf-rask-art-der-teilnehmerliste-termine field is empty
if (empty($_POST['wpcf-rask-art-der-teilnehmerliste-termine']['selector'])) {
// set wpcf-rask-bis-tag field as value 1
$_POST['wpcf-rask-art-der-teilnehmerliste-termine'] = 1;
}
}
}
I think the problem might be in this line:
if (empty($_POST['wpcf-rask-art-der-teilnehmerliste-termine']['selector'])) {
I am not really sure, what word I should use to describe the CRED select data type. I tried "select" and "selector" - but both doesn't work. I also searched for a documentation / list, where I can find all data types, so that I don't have to ask you guys everytime - but I didn't find anything. Sorry.
Is there any documentation that you are following?
https://toolset.com/forums/topic/re-open-cred-assign-value-of-another-field-if-field-is-empty/
Is there a similar example that we can see?
In the documentation
What is the link to your site?
hidden link
Hello, the $_POST format for a datepicker field is more complex, but the $_POST format for a select field is simple. It only contains the selected option value. So you can change your conditional like this:
if (empty($_POST['wpcf-rask-art-der-teilnehmerliste-termine'])) {
// set wpcf-rask-art-der-teilnehmerliste-termine field as value 1
$_POST['wpcf-rask-art-der-teilnehmerliste-termine'] = 1;
}
Unfortunately there is no documentation available for all the different data types. Any time you are unsure, use print_r to output the entire $_POST superglobal format during a submission test. This will allow you to see the full data structure. You can write it to the log like this:
error_log(print_r($_POST, true));
Here is an example of the output logged from my Form:
[wpcf-book-date-2] => Array
(
[display-only] => August 17, 2020
[datepicker] => 1597622400
[hour] => 8
[minute] => 0
[datetime] => 2020-08-17
[timestamp] => 1597651200
)
[wpcf-book-embed] => Array
(
[0] =>
)
[wpcf-book-video] => Array
(
[0] =>
)
[book-ref-1] => 2458
[wpcf-book-single-img-1] =>
[wpcf-book-single-img-2] =>
[wpcf-book-sel-1] =>
[wpcf-book-rept-img-1] => Array
(
[0] =>
)
[wpcf-book-multi-to-wysi] => fafafa
[wpcf-book-location] =>
[toolset-extended-form-wpcf-book-location] => Array
(
[latitude] =>
[longitude] =>
)
Writing to the log is much faster than waiting for a supporter in the forum 🙂 You can see datepicker and address fields are more complex, each with an array of key/value pairs. Repeating fields contain an array of simple values.
Hope this helps, please let me know if you have follow-up questions.
Many thanks Christian 🙂 and also many thanks for the explanation.