【问题标题】:Add Contact form ajax with shortcode in wordpress在wordpress中添加带有简码的联系表单ajax
【发布时间】:2016-01-13 08:07:25
【问题描述】:

我正在使用 ajax 为我的联系表单创建一个插件并添加简码 wordpress 。我不知道怎么做,它工作得很好,阅读了几个关于 admin-ajax.php 的论坛,但不明白如何将数据传递给这个文件。

这是代码:

<?php 

/*
Plugin Name: Formulario de contacto
Plugin URI: http://www.e-world.co
Description: Formulario de contacto con ajax
Version: 1.0
Author: Jorge Moreno
Author URI: http://www.e-world.co
license: GLP2
*/

function the_action_function(){
    $adminemail = "jorge.moreno@e-world.co";

                                if ($_GET['send'] == 'comments')
                                {

                                    $_uname = $_POST['name'];
                                    $_uemail = $_POST['email'];

                                    $_website   =   $_POST['website'];
                                    $_comments  =   stripslashes($_POST['comment']);



                                    $email_check = '';
                                    $return_arr = array();

                                    if($_uname=="" || $_uemail=="" || $_comments=="")
                                    {
                                        $return_arr["frm_check"] = 'error';
                                        $return_arr["msg"] = "Please fill in all required fields!";
                                    } 
                                    else if(filter_var($_uemail, FILTER_VALIDATE_EMAIL)) 
                                    {

                                    $to = $adminemail;
                                    $from = $_uemail;
                                    $subject = "Renew Email: " .$_uname;

                                    $message =  'Name: &nbsp;&nbsp;' . $_uname . '<br><br> Email: &nbsp;&nbsp;' . $_uemail . '<br><br> website: &nbsp;&nbsp;' . $_website .  '<br><br> Comment:&nbsp;&nbsp;' . $_comments;  

                                    $headers = "MIME-Version: 1.0\r\n";
                                    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
                                    $headers .= "Content-Transfer-Encoding: 7bit\r\n";
                                    $headers .= "From: " . $from . "\r\n";

                                    @mail($to, $subject, $message, $headers);   

                                    } else {


                                    $return_arr["frm_check"] = 'error';
                                    $return_arr["msg"] = "Please enter a valid email address!";


                                }

                                echo json_encode($return_arr);
                                }
}

function createAjaxContactForm() {
    return '
                        <div class="form">
                            <form action="process.php" method="post" name="ContactForm" id="ContactForm" >
                                <div class="form-group">    
                                    <input type="text" class="form-control" name="name" placeholder="Full Name *">
                                </div>
                                <div class="form-group">    
                                    <input type="text" class="form-control" name="email" placeholder="Email *">
                                </div>
                                <div class="form-group">    
                                    <input type="text" class="form-control" name="website" placeholder="Website">
                                </div>
                                <div class="form-group">
                                    <textarea rows="5" class="form-control" name="comment" placeholder="Your Message *" style="height:175px;"></textarea>
                                </div>
                                <div id="message_post"></div>
                                <input class="btn btn-default" type="submit" value="ENVIAR" name="submitf" id="submitf">
                            </form>
                        </div>';
}

add_shortcode('AjaxContactForm', 'createAjaxContactForm');

 ?>

还有我的 ajax:

jQuery(function(){
    jQuery("#ContactForm").submit(function(){
        jQuery("#submitf").value='Please wait...';

        jQuery.post("password/wp-admin/admin-ajax.php", jQuery("#ContactForm").serialize(),
        function(data){
            if(data.frm_check == 'error'){ 

                    jQuery("#message_post").html("<div class='errorMessage'>ERROR: " + data.msg + "!</div>"); 
                    document.ContactForm.submitf.value='Resend >>';
                    document.ContactForm.submitf.disabled=false;
            } else {
                jQuery("#message_post").html("<div class='successMessage'>Your message has been sent successfully!</div>"); 
                jQuery("#submitf").value='Send >>';
                }
        }, "json");

        return false;

    });
});

【问题讨论】:

    标签: javascript php jquery ajax wordpress


    【解决方案1】:

    这是 ajaxurl 写这段代码 your-theme/functions.php

    <?php function frontend_custom_ajaxurl() { ?>
        <script type="text/javascript">
            var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
        </script>
        <?php
      }
    add_action('wp_head','frontend_custom_ajaxurl');
    

    这是你的php函数可以做任何事情。并将这段代码写在 your-theme/functions.php 文件中

    function your_function() {
        parse_str($_POST['data'], $params);
        print_r($params)
        exit;
    }
    add_action('wp_ajax_your_function', 'your_function');
    add_action('wp_ajax_nopriv_your_function', 'your_function');
    

    这是 JQuery。

    jQuery("#ContactForm").submit(function(event) {
        event.preventDefault();
        jQuery("#submitf").value = 'Please wait...';
        var data = {
            action: 'your_function', // here php function such as your_function
            data: jQuery("#ContactForm").serialize(),
        };
        jQuery.post(ajaxurl, data, function(response) {
            ......................
        });
    });
    

    有什么困惑的评论吗?

    【讨论】:

    • 您好,Sajidthanx 为您解答。我试试
    • 欢迎。很高兴为您提供帮助
    【解决方案2】:

    对于 ajax 使用此代码:

    在 .php 文件中使用下面的代码,如果它不起作用,用 jQuery 替换 $

    $().ready(function() {
        var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
        $.post(
            ajaxurl, {
                'action': 'set_the_city',
                //pass all the parameter from the form in key value pairs here
            },
            function(output) {
                console.log(output)
            });
    });
    

    WordPress 为 ajax 调用提供了一个钩子。

    add_action('wp_ajax_set_the_city', 'set_the_city');
    add_action('wp_ajax_nopriv_set_the_city', 'set_the_city');
    
    function set_the_city() {
        //all the data can be retrieved by $_REQUEST so do the coding for the_action_function() here.
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 2018-07-13
      • 2012-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多