Git Product home page Git Product logo

wp-libre-form's Introduction

WP Libre Form

Latest Stable Version Total Downloads Latest Unstable Version License

Use standard HTML5 markup to create fully functional forms for WordPress

Features:

  • Uses only HTML5 syntax to build forms. No GUIs, shortcodes, no bullshit
  • Works with any valid HTML form. Just copy any form from any website and it will work. It's magic!
  • Submits and validates forms via AJAX
  • Automatically detects and captures fields in any HTML form. Form values are saved as standard custom fields
  • Validates required fields automatically using the native HTML5 required attribute
  • It's pluggable. Add your own validation or automation with filters and action hooks.
  • Option to send a copy of submitted forms via email
  • Preview your forms
  • Full file upload support with input type=file

Screenshots

Editing a Form

Form edit

Form displayed in the default Twentysixteen theme

Submissions

Submissions view

Submissions

Single submission view

Submissions

Installation

The Composer Way (preferred)

Install the plugin via Composer

composer require anttiviljami/wp-libre-form

Activate the plugin

wp plugin activate wp-libre-form

The Old Fashioned Way

This plugin is available on the official WordPress.org plugin directory.

You can also install the plugin by directly uploading the zip file as instructed below:

  1. Download the plugin
  2. Upload to the plugin to /wp-content/plugins/ via the WordPress plugin uploader or your preferred method
  3. Activate the plugin

Filter / Action API

Action: wplf_post_validate_submission

Triggers after the form validation is done.

Example use:

Send a thank you email to the email in the submission

<?php
add_action( 'wplf_post_validate_submission', 'my_email_thankyou' );
function my_email_thankyou( $return ) {
  // do nothing if form validation failed
  if( ! $return->ok ) {
    return;
  }

  $name = sanitize_text_field( $_POST['name'] );
  $email = sanitize_email( $_POST['email'] );
  $to = '"' . $name . '" <' . $email . '>';
  $subject = __( 'Thank You For Submitting A Form' );
  $content = wp_sprintf( __('Thanks, %s for clicking Submit on this glorious HTML5 Form!'), $name );
  wp_mail( $to, $subject, $content );
}

Use shortcodes outside post content

By default, scripts are only loaded when the shortcode is within the content. If you use shortcodes outside the content, ex. custom fields or by do_shortcode, you need to manually enqueue the scripts for the submit to work.

wp_enqueue_script('wplf-form-js');
wp_localize_script( 'wplf-form-js', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );

Client side callbacks

WP Libre Form supports client side callbacks after form submission using window.wplf object. Example usage:

window.wplf.successCallbacks.push(function(response){
  alert("You succesfully submitted form " + response.form_id);
});

window.wplf.errorCallbacks.push(function(response){
  alert("Form submission failed!");
});

These callbacks are executed in the order they appear.

Add CSS classes to form output

You can use the xclass attribute inside the shortcode to add your own extra classes.

[libre-form id="1" xclass="extra"]

Filter: wplf_validate_submission

Used to add validation to your forms

Example use:

Make sure people don't include dumb questions about Contact Form 7 in the message field.

<?php
add_filter( 'wplf_validate_submission', 'my_form_validation' );
function my_form_validation( $return ) {
  // skip this validation if submission has already failed
  if( ! $return->ok ) {
    return $return;
  }

  // don't allow contact form 7 to be mentioned in the message field
  if( false !== strpos( strtolower( $_POST['message'] ), 'contact form 7' ) ) {
    $return->ok = 0;
    $return->error = sprintf( __("I don't like Contact Form 7 so I won't accept your submission."), intval( $_POST['_form_id'] ) );
  }
  return $return;
}

wplf_validate_submission example: Google ReCaptcha integration

/**
 * ReCaptcha for WP Libre Form
 */
add_filter( 'wplf_validate_submission', 'wplf_recaptcha' );
function wplf_recaptcha( $return ) {
  // skip this validation if submission has already failed
  if( ! $return->ok ) {
    return $return;
  }

  $form = get_post( (int) $_POST['_form_id'] );
  if( false === strpos( $form->post_content, 'g-recaptcha' ) ) {
    // this form doesn't have recaptcha
    return $return;
  }

  $secret = 'XXXX'; // substitute with your own secret recaptcha key

  $options = [
    'http' => [
      'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
      'method'  => 'POST',
      'content' => http_build_query([
        'secret' => $secret,
        'response' => $_POST['g-recaptcha-response'],
      ])
    ],
  ];
  $context  = stream_context_create( $options );
  $result = file_get_contents( 'https://www.google.com/recaptcha/api/siteverify', false, $context );

  $captcha_obj = json_decode( $result );

  if( false === $captcha_obj->success ) {
    $return->ok = 0;
    $return->error = sprintf( __("Please prove you're not a robot before submitting."), intval( $_POST['_form_id'] ) );
  }

  return $return;
}

Multilingual

You can create multilingual forms using Polylang. WPLF will register and automatically fetch the translation when you use special template tags.

Example:

<input type="text" placeholder="{{ Test string  }}" name="test">

You can also disable this feature, and create your own middleware for WPML, if you'd like.

add_filter( 'wplf_load_polylang' , function() {
  return false;
} );

wp-libre-form's People

Contributors

k1sul1 avatar timiwahalahti avatar niq1982 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.