包括定制AJAX注册表单的必要功能

时间:2014-04-09 作者:harryg

我知道登记表上有一些问题,但我认为我的问题有点不同,因为我还没有通过搜索找到答案。

我正在制作一个简单的订阅小部件,它接收用户的电子邮件并将其作为订阅者添加到WordPress用户表中。

它从一个简单的表单开始,只需输入电子邮件并提交即可。表单的操作是在我的插件文件夹中创建一个php文件,ajax-signup.php. 我使用ajax将表单数据发布到此文件,然后该文件“注册”电子邮件地址并返回ajax响应。

旧的插件只包括registration.php 该文件为ajax php文件提供了所有必需的功能,以便它在文件存在于WP之外时执行注册(检查电子邮件验证、写入数据库等)。我需要包括什么,或者有什么更好的方法可以让我做到这一点?可能是WP环境中的函数,而不是独立文件?我不知道如何以这种方式使用ajax。。。

1 个回复
最合适的回答,由SO网友:Douglas.Sesar 整理而成

下面是我在Wordpress中用于AJAX的基本设置。而不是加载wp负载。单独php文件上的php;只需对AJAX调用使用Wordpress默认方法。这还允许您通过开关过滤Javascript中的函数调用。我还为wp\\u localize\\u脚本添加了一个快速示例。

<?php

add_action(\'wp_enqueue_scripts\', \'YOUR_NAME_scripts\'); //back end

function YOUR_NAME_scripts( $hook_suffix ) {

            wp_enqueue_script(\'YOUR_NAME-js\');

            global $blog_id;
            $params = array(
                \'site_url\' => site_url(),
                \'admin_ajax_url\' => site_url() . \'/wp-admin/admin-ajax.php\'
            );

            wp_localize_script( \'jquery\', \'YOUR_NAME\', $params );

}

add_action(\'wp_ajax_nopriv_YOUR_NAME_ajax\', \'YOUR_NAME_ajax_function\');
add_action(\'wp_ajax_YOUR_NAME_ajax\', \'YOUR_NAME_ajax_function\');
function YOUR_NAME_ajax_function(){

    fobu_load_classes();

    switch($_REQUEST[\'fn\']):
        case \'test_ajax\':
            $output = $_REQUEST[\'data\'];
        break;


        default:
            $output = \'No function specified, check your jQuery.ajax() call\';
        break;
    endswitch;

    ob_clean();
    $output=json_encode($output);
    if(  is_array( $output )  ):

        print_r( $output );
    else:

        echo $output;
    endif;
    die();

}





?>

<script>
//in YOUR_NAME.js or whatever
jQuery(document).ready(function() { 
    (function ($) { 

                jQuery.ajax({
                    url: YOUR_NAME.admin_ajax_url,
                    dataType: \'json\',
                    //type:\'POST\',
                    data: {
                       \'action\':\'YOUR_NAME_ajax\',
                       \'fn\': \'test_ajax\',
                       \'data\': data
                       },
                    success: function(results){
                        //console.log(results);
                        if( results ){

                        }

                    },// end of success
                    error: function(errorThrown){console.log(errorThrown);}
                });// end of ajax   

    })(jQuery);
});

</script>
如果您使用内置的wordpress AJAX,那么您可以轻松访问wordpress函数,而无需使用wp load。php。

结束

相关推荐

从AJAX中的WordPress函数获取帖子

我正在尝试用ajax获取帖子。一切正常,但只显示一个帖子。请检查我的代码并告诉我是否有问题function ag_get_posts() { global $post; $args = array( \'post_type\' => \'post\', \'posts_per_page\' => 12, \'post_status\' => \'publish\', );