wordpress - 需要添加自定义php(由AJAX调用),但不能在主题中添加

时间:2016-12-14 00:30:10

标签: ajax wordpress

我有一个wordpress应用程序,在一个页面中,我需要对一些自定义PHP文件进行AJAX调用。自定义PHP代码将创建一个图像文件并将其保存在目录中。将图像存储在根目录下的自定义目录中是否安全?

放置此自定义PHP文件的好地方在哪里?我应该将它放在根目录下新创建的文件夹中吗?或者如果更新wordpress,它会被删除吗?我需要为此创建一个插件吗?

3 个答案:

答案 0 :(得分:1)

如果您使用站点的uploads文件夹中的自定义目录来存储图像,则会更好。创建它然后chmod 775

将表单放在页面的页面模板中。添加一个带有“upload-response”类的空div。在关闭容器div之前,插入一个脚本标记,该标记将回显js变量的admin-ajax.php路径:

<script>
    var ajaxurl = '<?php echo admin_url( 'admin-ajax.php' ); ?>';
</script>

我使用jQuery来处理其余部分(upload.js文件的内容):

(function ($) {
$('body').on('click', '.upload-form .btn-upload', function(e){
    e.preventDefault();


    var imagedata = canvas.toDataURL('image/png');

    var fd = new FormData();
    //var files_data = imagedata;
    fd.append('image', imagedata);

    // our AJAX identifier
    fd.append('action', 'my_upload_files');  

    // Remove this code if you do not want to associate your uploads to the current page.
    //fd.append('post_id', <?php echo $post->ID; ?>); 

    $.ajax({
        type: 'POST',
        url: ajaxurl,
        data: fd,
        contentType: false,
        processData: false,
        success: function(response){
            $('.upload-response').html(response); // Append Server Response
        }
    });
});
})(jQuery);

在您的插件文件中,添加:

add_action('wp_enqueue_scripts','ajax_upload_script');
function ajax_upload_script() {
    wp_enqueue_script('ajax-upload', plugins_url( '/js/upload.js' ), array('jquery'), '', true);
}

add_action('wp_ajax_my_upload_files', 'my_upload_files');
add_action('wp_ajax_nopriv_my_upload_files', 'my_upload_files'); // Allow front-end submission 

function my_upload_files(){
//file handling here
}

或者,如果您不想制作插件,请将操作添加到您的子主题functions.php并将plugins_url( '/js/upload.js' )更改为get_stylesheet_directory_uri().'/js/upload.js'

答案 1 :(得分:0)

一种方法是使用像PHP Code for posts这样的插件。这比将PHP硬编码到模板或WP页面更好。优点是您可以轻松更新和更改代码,当WP需要更新时,您无需重新应用硬编码的PHP。

答案 2 :(得分:0)

"2016/01/28"