Skip Navigation

[Resolved] Copying value of one field to another field?

This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.

Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.

Sun Mon Tue Wed Thu Fri Sat
- 10:00 – 13:00 10:00 – 13:00 10:00 – 13:00 10:00 – 13:00 10:00 – 13:00 -
- 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 -

Supporter timezone: Asia/Kolkata (GMT+05:30)

This topic contains 14 replies, has 3 voices.

Last updated by Minesh 1 year, 4 months ago.

Assisted by: Minesh.

Author
Posts
#2634545

I was trying to following this advice https://stackoverflow.com/questions/53834361/copy-value-for-one-field-to-another-acf-advanced-custom-fields-wordpress

When a user submits a front-end CRED form I want the value they select here: In a field with a slug of "opportunity-removal-date" to get populated here: cred-post-expiration, but I haven't been able to get it to work using this code snippet.

I know these are Toolset based fields and not ACF but I was hoping something similar would work.

add_action('admin_footer', function () {
?>
<script type="text/javascript">
$('#cred-post-expiration').on('keyup', e => {
$('#opportunity-removal-date').val(parseFloat(e.target.value));
})
</script>
<?php
});

#2634685

Nigel
Supporter

Languages: English (English ) Spanish (Español )

Timezone: Europe/London (GMT+00:00)

Hi Larry

Again, rather than iterating on an existing solution, let's first clarify exactly what it is that you want to do.

Your users will be updating/creating posts via front-end forms, rather than in the back-end post edit screens?

And you want to include a field "opportunity-removal-date" in the form, and have this date automatically copied across to the hidden cred post expiration field, so that the post will automatically expire at that time?

#2634715

Yes that is correct! I want to include a field "opportunity-removal-date" in the form, and have this date automatically copied across to the hidden cred post expiration field, so that the post will automatically expire at that time.

#2635079

Minesh
Supporter

Languages: English (English )

Timezone: Asia/Kolkata (GMT+05:30)

Hello. Thank you for contacting the Toolset support.

You can use the Toolset Form's hook "cred_save_data" to set custom post expiration date.
=> https://toolset.com/documentation/programmer-reference/cred-api/#cred_save_data

Post expiration time is saved with the meta key namely "_cred_post_expiration_time" to the postmeta database table that holds the date field value as Unix Timestamp. That is why we will require to save the timestamp with the post meta key "_cred_post_expiration_time".

For example - you can add the following hook to "Custom Code" section offered by Toolset:
=> https://toolset.com/documentation/programmer-reference/adding-custom-code/using-toolset-to-add-custom-code/

add_action('cred_save_data', 'func_set_custom_post_expiration_date',10,2);
function func_set_custom_post_expiration_date($post_id, $form_data){
    // if a specific form
    if ($form_data['id']==99999){
         
        $expiry_date = $_POST['date-field-slug']['timestamp'];
            update_post_meta($post_id, '_cred_post_expiration_time', $expiry_date );
    }
}

Where:
- Replace 99999 with your original form ID
- Replace "date-field-slug" with your original custom date field slug.

Here are few reference tickets that might help you:
- https://toolset.com/forums/topic/set-expiration-date-based-on-product-selected/
- https://toolset.com/forums/topic/post-expiry-date-in-form-saves-a-different-date-in-the-post/

#2635211

I've updated the code snippet but the value is not copying.

add_action('cred_save_data', 'func_set_custom_post_expiration_date',10,2);

function func_set_custom_post_expiration_date($post_id, $form_data){

// if a specific form

if ($form_data['id']==356){

$expiry_date = $_POST['opportunity-removal-date']['timestamp'];

update_post_meta($post_id, '_cred_post_expiration_time', $expiry_date );

}

}

#2635535

Minesh
Supporter

Languages: English (English )

Timezone: Asia/Kolkata (GMT+05:30)

I will require problem URL where you added the form as well as admin access details.

*** Please make a FULL BACKUP of your database and website.***
I would also eventually need to request temporary access (WP-Admin and FTP) to your site. Preferably to a test site where the problem has been replicated if possible in order to be of better help and check if some configurations might need to be changed.

I have set the next reply to private which means only you and I have access to it.

#2635661

Minesh
Supporter

Languages: English (English )

Timezone: Asia/Kolkata (GMT+05:30)

It seems you forget to share the problem URL where you added the form. Can you please share that.

#2635663

Sorry, form hidden link

#2635665

Minesh
Supporter

Languages: English (English )

Timezone: Asia/Kolkata (GMT+05:30)

I know this is the form based on the ID added to the code snippet but what I would like to know is on what page/post you added the form?

Where can I see the form on frontend?

#2635685

hidden link

is the form and here is an example of a published one

hidden link

#2635707

Minesh
Supporter

Languages: English (English )

Timezone: Asia/Kolkata (GMT+05:30)

I see you have first add form on this page:
- hidden link

As soon as you submit the form the user will be redirected on another form that is edit form:
- hidden link

On what setting you would like to save the post expiration date? on both form submit?

#2635709

Both if possible, but at least the initial one. Thanks!

#2635725

Minesh
Supporter

Languages: English (English )

Timezone: Asia/Kolkata (GMT+05:30)

Can you please check now.

I've adjusted the code as given under to your code snipeet.
- hidden link

add_action('cred_save_data', 'func_set_custom_post_expiration_date',999,2);
function func_set_custom_post_expiration_date($post_id, $form_data){

   if ($form_data['id']==356 or $form_data['id']==376) {
	   
       $expiry_date = $_POST['wpcf-opportunity-removal-date']['timestamp'];
	update_post_meta($post_id,'_cred_post_expiration_time', $expiry_date );
}

}

I've also disabled the code snippet "Copy of Post Removal Date to Post Expiration Date (testing)" as it was not required.

Can you please confirm it works as expected now.

#2635733
Screenshot 2023-08-21 at 11.07.27 AM.jpg
Screenshot 2023-08-21 at 11.07.21 AM.jpg

Thank you! It's very close. I think the time differences just knocks if off a little. We may have to live with that.

#2636179

Minesh
Supporter

Languages: English (English )

Timezone: Asia/Kolkata (GMT+05:30)

Its seems its because of in your WordPess settings you set your timezone for Chicago.

Is that Ok for you if we change it to UTC or you would like to live with the timezone change?