About this plugin
WARNING
If you are not developer this plugin is not for you. Motiforms do not provide any WordPress admin interface to creating forms.
Features
- Handle form logic
- Field sanitization
- Field validation
- Built in html rendering helpers
- Flexibility
- Based on advanced Symfony framework
Get started
php file. And paste [contact] shortcode to your contact page.
use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\EmailType; use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\Form\Extension\Core\Type\SubmitType;
class ContactForm {
/** * Form instance * * FormType */ private $form;
/** * ContacForm constructor * * @return ContacForm */ public function __construct() {
$this->define_hooks(); }
/** * Create and process contact form * * This method is executed by wp action hook. * It will be executed only on page which has contact * shortcode. * * @return void */ public function controller() {
global $post;
// Check if current view is page and page has content shortcode if ( is_page() && has_shortcode( $post->post_content, 'contact' ) ) {
$factory = mf_get_factory();
// Create form $this->form = $factory->create();
// Add fields to form $this->form->add( 'full_name', TextType::class ); $this->form->add( 'email', EmailType::class ); $this->form->add( 'message', TextareaType::class ); $this->form->add( 'submit', SubmitType::class );
// Get request object $request = mf_get_request();
// Handle request $this->form->handleRequest( $request );
// Check if form is valid if ( $this->form->isSubmitted() && $this->form->isValid() ) {
// Get data from the form $data = $this->form->getData();
// Define filters $filters = array( 'full_name' => FILTER_SANITIZE_STRING, 'email' => FILTER_SANITIZE_STRING | FILTER_SANITIZE_EMAIL, 'message' => FILTER_SANITIZE_STRING, );
// Fields sanitization $sanitized_data = filter_var_array( $data, $filters );
g. send an e-mail
// Redirect user with success parameter to prevent double submitting form wp_safe_redirect( $this->get_redirect_url() ); } } }
/** * Render contact form. * * This method is executed by contact shortcode. * * @return string */ public function render() {
$success = filter_input( INPUT_GET, 'success', FILTER_SANITIZE_NUMBER_INT );
if( '1' === $success ) { return sprintf('<h2>%s</h2>', __('Thank you for submitting the form. ') ); }
$form_view = $this->form->createView();
$engine = mf_get_engine();
return $engine['form']->form( $form_view, array('attr' => array('novalidate' => 'novalidate') ) );
}
/** * Method executed by constructor to define hooks and * create and render contact form. * * @return void */ private function define_hooks() {
add_action( 'wp', array( $this, 'controller' ) );
add_shortcode( 'contact', array( $this, 'render' ) ); }
/** * Build url for form redirect * * @return string */ private function get_redirect_url() {
$url = get_permalink();
$query = parse_url($url, PHP_URL_QUERY);
success=1'; }
return $url; } }
// Initialize contact form new ContactForm();