Skip to content

Instantly share code, notes, and snippets.

@mecachisenros
Created March 8, 2019 14:01
Show Gist options
  • Save mecachisenros/e095e57e0c50551c3d7af1bd3cdecc8e to your computer and use it in GitHub Desktop.
Save mecachisenros/e095e57e0c50551c3d7af1bd3cdecc8e to your computer and use it in GitHub Desktop.
Calder Forms Polylang example integration
<?php
/**
* Plugin Name: Caldera Forms Polylang
* Version: 0.1
* Author: Andrei Mondoc
*/
// register form and field translatable strings
add_action( 'admin_init', function() {
// get forms
$forms = Caldera_Forms::get_forms();
// loop through forms
array_map( function( $form ) {
$form_group = $form['name'] . ' : ' . $form['ID']; // form group reference to filter based on form
// register translatable form name
pll_register_string( $name = 'Form name', $string_to_translate = $form['name'], $group = $form_group );
// translate success message
pll_register_string( 'Form name', trim( $form['success'] ), $form_group );
// add more form properties here
// get form config
$config = Caldera_Forms::get_form( $form['ID'] );
// loop through form fields
array_map( function( $field ) use ( $form, $form_group ) {
// add some logic for html or select/radio/dropdown field types
// note that $name is the field slug here
// same field slugs will override existing ones
// so might be a good idea to be consistent across form/field slugs
// ie keep First name => first_name consistent acrross all forms
pll_register_string( $field['slug'], trim( $field['label'] ), $group = $form_group );
}, $config['fields'] );
}, $forms );
} );
// filter field config at render stage
add_filter( 'caldera_forms_render_get_field', function( $field, $form ) {
// add logic for field types etc...
// translate field label
$field['label'] = pll__( trim( $field['label'] ) );
return $field;
}, 30, 2 );
// translate form config at render stage
add_filter( 'caldera_forms_render_get_form', 'cf_translate_form_config', 30 );
// translate form setting at submit stage
add_filter( 'caldera_forms_submit_get_form', 'cf_translate_form_config', 30 );
function cf_translate_form_config( $form ) {
// tranlate name
$form['name'] = pll__( $form['name'] );
// translate success message
$form['success'] = pll__( trim( $form['success'] ) );
return $form;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment