Bonjour,

J'aimerais passer un formulaire dans un widget mais je ne sais pas dutout comment faire car il y a du php et du html...

Je voudrais savoir si vous pouriez m'expliquer les démarches a suivres pour passer mon formulaire dans mon widget

Mon formulaire est

<?php
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}
$message = '';

if( is_single() && get_post_type() == 'opalestate_property' ){
    $message = sprintf(__('Hi, I am interested in %s (Property ID: %s)'), get_the_title() , get_the_ID() );
}

if( $post_id == 0 && !isset($author_id) ){
    global $post;
    $author_id = $post->post_author; 
}
?>

<?php if ( ! empty( $email ) ) : ?>
    <div class="agent-contact-form-container">
        <h3><?php echo __( 'Contact Form', 'opalestate' ); ?></h3>

        <div class="box-content agent-contact-form">

            <form method="post" action="" class="opalestate-contact-form">
                <?php do_action('opalestate_agent_contact_form_before'); ?>
                <input type="hidden" name="post_id" value="<?php the_ID(); ?>">
                <input type="hidden" name="agent_id" value="<?php echo $post_id; ?>">
                <?php if( isset($author_id) ) : ?>
                 <input type="hidden" name="author_id" value="<?php echo $author_id; ?>">
                <?php endif ; ?>

                <div class="form-group">
                    <input class="form-control" name="name" type="text" placeholder="<?php echo __( 'Name', 'opalestate' ); ?>" required="required">
                </div><!-- /.form-group -->

                <div class="form-group">
                    <input class="form-control" name="email" type="email" placeholder="<?php echo __( 'E-mail', 'opalestate' ); ?>" required="required">
                </div><!-- /.form-group -->

                <div class="form-group">
                    <textarea class="form-control" name="message" placeholder="<?php echo __( 'Message', 'opalestate' ); ?>" style="overflow: hidden; word-wrap: break-word; height: 68px;"><?php echo $message
                    ; ?></textarea>
                </div><!-- /.form-group -->
                <?php do_action('opalestate_agent_contact_form_after'); ?>
                <button class="button btn btn-primary btn-3d" type="submit" name="contact-form"><?php echo __( 'Send message', 'opalestate' ); ?></button>
            </form>
        </div><!-- /.agent-contact-form -->
    </div><!-- /.agent-contact-->
<?php endif; ?>

Mon widget ( rien de compliqué )

<?php

add_action( 'widgets_init', function(){
    register_widget( 'My_Widget' );
});

class My_Widget extends WP_Widget {

    /**
     * Sets up the widgets name etc
     */
    public function __construct() {
        $widget_ops = array( 
            'classname' => 'Contact',
            'description' => 'formulaire de contact ',
        );
        parent::__construct( 'my_widget', 'Contact', $widget_ops );

    }

    /**
     * Outputs the content of the widget
     *
     * @param array $args
     * @param array $instance
     */
    public function widget( $args, $instance ) {
        // outputs the content of the widget
    }

    /**
     * Outputs the options form on admin
     *
     * @param array $instance The widget options
     */
    public function form( $instance ) {
        // outputs the options form on admin

    }

    /**
     * Processing widget options on save
     *
     * @param array $new_instance The new options
     * @param array $old_instance The previous options
     */
    public function update( $new_instance, $old_instance ) {
        // processes widget options to be saved
    }
}

?>

Merci d'avance de votre aide ! ;)

1 réponse


Etant donné que ton formulaire est basique, pourquoi tu n'utilises pas un plugin de formulaire de type (contact form7 ou gravityForm) que tu pourrais utiliser en tant que widget?!