【问题标题】:Wordpress - ajax function when logged outWordpress - 注销时的ajax功能
【发布时间】:2014-09-15 11:32:15
【问题描述】:

我正在使用第三方插件来允许从网站前端创建帖子。基本上我想要用户可以创建帖子的功能,我可以在管理后端批准或不批准帖子。但是 tt 有一个 AJAX 上传器,允许您上传特色图片,但这仅在您登录时有效。我看到 ajax 调用通过 wp-admin/admin-ajax.php 并到达该行:

do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] );

我看不到这如何限制上传或如何通过此 AJAX 调用启用上传。

任何帮助表示赞赏。 谢谢

【问题讨论】:

    标签: php ajax wordpress


    【解决方案1】:

    Ajax 与 wordpress 的工作方式略有不同。不是通过 ajax 将信息发送到要获取的函数的 url,而是将其发送到“/wp-admin/admin-ajax.php”,它会触发 wp_ajax 挂钩,或者在前端的情况下触发 wp_ajax_nopriv 挂钩。

    当这个文件接收到信息时,它会将你的 ajax 函数中的 action: 变量与添加到 wp_ajax_nopriv_ 钩子(如果是前端)或 wp_ajax(如果是后端)的操作相匹配。

    需要明确的是,这只是服务器端代码。您将需要 jQuery 来触发一个动作(例如按下按钮),然后将信息发送到该动作并检索输出。例如

        jQuery('#image').click(function() { // fires when some element with id #image is click on
    
        jQuery.ajax({
            type: "POST",
            url: "/wp-admin/admin-ajax.php",
    
            data: {
                action: 'sample_ajax_function', 
                reg: regnum, // any other data you want to send?
                maketaxonomy: '<?php echo $maketaxonomy;?>'
            },
            success: function (output) { // if data is returned from your function you can pick it up using output now. 
    
            console.log(output); //log it to your console so you can see what is returned.
    
            },
    
    
        });
    
     });
    

    然后在你的函数文件中。

    add_action('wp_ajax_nopriv_sample_ajax_function', 'my_ajax_function');
    
    function my_ajax_function() {
        $reg= $_POST['reg'];
    
        echo $reg; //output something.
        exit; // no more output
    }
    

    如果您正在寻找一种可以用来上传图片的方法,请查看此处Html multiple file input - javascript access and delete files

    【讨论】:

    猜你喜欢
    • 2013-05-10
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 2021-11-11
    • 1970-01-01
    • 2011-07-29
    相关资源
    最近更新 更多