Hi I am setting up educational portal with cpt schools,colleges,courses,universities etc.There is relationship between each cpt.
My problem is a ...each school/college have a specific code registered with university or any government organization.This code nature is non duplicating.
I want to display such code on school/college page.But I can not find any option which allows or bans duplicate value submission.
Need you help ...
Nigel
Supporter
Languages:
English (English )
Spanish (Español )
Timezone:
Europe/London (GMT+00:00)
Hi there
You'll need custom form validation for this using the CRED API hook cred_form_validate (https://toolset.com/documentation/programmer-reference/cred-api/#cred_form_validate ).
I prepared some sample code to demonstrate what is involved. I haven't tested it, but it should illustrate what is required.
/**
* CRED custom validation to prevent duplicates
*/
add_filter( 'cred_form_validate', 'prevent_duplicate_submissions' );
function prevent_duplicate_submissions( $error_fields, $form_data ) {
$post_type = 'cpt-slug'; // Edit
$unique_field = 'wpcf-' . 'field-slug'; // Edit
$form_ids = array( 101, 115 ); // Edit IDs of CRED forms
list( $fields,$errors ) = $error_fields;
if ( in_array($form_data['id'], $form_ids ) ) {
// Get existing posts with unique field
$args = array(
'post_type' => $post_type,
'post_status' => 'publish',
'numberposts' => -1,
'meta_key' => $unique_field,
'meta_value' => $fields[ $unique_field ]
);
$matching = get_posts( $args );
if ( !empty( $matching ) ) {
$errors[ $unique_field ] = 'Value already used';
}
}
return array($fields,$errors);
}
You would need to add this to your theme's functions.php file, or using a plugin such as Code Snippets.
Let me know how you get on.
Hi !
Thanks for your assistance.I tried this code.But its not working.Post is getting accepted with duplicate value.
Nigel
Supporter
Languages:
English (English )
Spanish (Español )
Timezone:
Europe/London (GMT+00:00)
Hi there
Sorry for the delay in getting back to you, I was away for a couple of days at Christmas.
I checked the code and you are right, there is a simple omission when adding the filter.
That line needs to be like this to pass both the arguments:
add_filter( 'cred_form_validate', 'prevent_duplicate_submissions', 10, 2 );
Great ! Functionality achieved.But following error is shown...
Warning: mysqli_real_escape_string() expects parameter 2 to be string, array given in......./public_html/wp-includes/wp-db.php on line 1109
Nigel
Supporter
Languages:
English (English )
Spanish (Español )
Timezone:
Europe/London (GMT+00:00)
Hi there
I'm glad that it is working, but you should not be seeing the PHP warning.
Can you first confirm that the warning only appears when you have added the above code? If you remove the code do you still see the warning?
I don't see any such warning on my test site where I have added the code.
I have confirmed by adding and removing code....
add_filter( 'cred_form_validate', 'prevent_duplicate_submissions', 10, 2 ); causes php error...
Nigel
Supporter
Languages:
English (English )
Spanish (Español )
Timezone:
Europe/London (GMT+00:00)
Could I please get you to run a conflict test to see if it is possible to narrow-down the source of the warning (which I don't see on my test site).
Switch theme to twentyseventeen and test again to see if the warning is present.
Disable non-Toolset plugins and test again to see if the warning is present.
If the warning disappears it should be possible to isolate the conflict by selectively re-activating the theme or individual plugins.
Let me know how that goes so I can see how to proceed, thanks.
Hi !
Currently I have disabled all plugins expect Toolset bundle.And theme also changed to Twenty Fourteen. But still Error message appears.
Nigel
Supporter
Languages:
English (English )
Spanish (Español )
Timezone:
Europe/London (GMT+00:00)
Sorry, one last thing.
Can you provide the debug info in your next reply?
https://toolset.com/faq/provide-debug-information-faster-support/
Hello !
Debug info is provided...
Nigel
Supporter
Languages:
English (English )
Spanish (Español )
Timezone:
Europe/London (GMT+00:00)
OK, that all looks in order.
There's nothing left for me to do but ask you for a copy of your site so that I can test locally.
Can you make a site duplicate for me?
https://toolset.com/faq/provide-supporters-copy-site/
If you have any problems with that I can make the duplicate myself, let me know.
I have no experience of Duplicator plugin.Plz do site duplication for me.....thanks...
Nigel
Supporter
Languages:
English (English )
Spanish (Español )
Timezone:
Europe/London (GMT+00:00)
Hi there
I took a duplicate of your site but was unable to install it successfully locally, I cannot get access to the backend.
I could try again with another plugin, All in One WP Migration.
Could you please install and activate the plugin and then let me know so that I can generate and download the archive?
Hi!
I have installed plugin you told...but its not free for multisite.So I have installed another one..wp-staging..is it fine ? let me know..