我有一个wordpress应用程序,在一个页面中,我需要对一些自定义PHP文件进行AJAX调用。自定义PHP代码将创建一个图像文件并将其保存在目录中。将图像存储在根目录下的自定义目录中是否安全?
放置此自定义PHP文件的好地方在哪里?我应该将它放在根目录下新创建的文件夹中吗?或者如果更新wordpress,它会被删除吗?我需要为此创建一个插件吗?
答案 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"