mirror of
https://github.com/yunluo/gdk.git
synced 2024-05-25 01:42:22 +02:00
增加Ajax粘贴上传图片功能
This commit is contained in:
parent
9f587883a9
commit
68b03f4c34
|
@ -1,15 +1,30 @@
|
|||
<?php
|
||||
|
||||
function nc_optimizeup_enqueue_script() {
|
||||
wp_register_script('nicetheme-optimizeup', plugin_dir_url( __FILE__ ) . 'assets/main.js', array( 'jquery' ));
|
||||
function gdk_admin_script() {
|
||||
?>
|
||||
<script>
|
||||
jQuery(function ($) {
|
||||
$("#content").pasteUploadImage(ajaxurl);
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
|
||||
|
||||
|
||||
function nc_optimizeup_enqueue_script($hook) {
|
||||
//wp_register_script('nicetheme-optimizeup', plugin_dir_url( __FILE__ ) . 'assets/main.js', array( 'jquery' ));
|
||||
wp_register_script('paste-upload-image', GDK_BASE_URL.'assets/js/paste-upload-image.js', array( 'jquery' ), GDK_PLUGIN_VER, true);
|
||||
//wp_enqueue_script('nicetheme-optimizeup');
|
||||
wp_enqueue_script('paste-upload-image');
|
||||
wp_register_script('sweetalert','https://cdn.bootcss.com/sweetalert/2.1.2/sweetalert.min.js', [], GDK_PLUGIN_VER, true);
|
||||
|
||||
}
|
||||
add_action('admin_enqueue_scripts', 'nc_optimizeup_enqueue_script');
|
||||
|
||||
function nc_optimizeup_enqueue_script_frontend() {
|
||||
if (!is_admin()) {
|
||||
wp_register_style( 'gdk_css', GDK_BASE_URL.'assets/css/gdk.css', array(), GDK_PLUGIN_VER, 'all' );
|
||||
wp_register_style( 'gdk_css', GDK_BASE_URL.'assets/css/gdk.css', [], GDK_PLUGIN_VER, 'all' );
|
||||
wp_register_script('code_prettify_js', GDK_BASE_URL.'assets/js/prettify.min.js', array('jquery'), GDK_PLUGIN_VER, true);
|
||||
wp_register_script('fancybox_js', GDK_BASE_URL.'assets/js/fancybox.min.js', array('jquery'), GDK_PLUGIN_VER, true);
|
||||
wp_register_script('lazyload_js', GDK_BASE_URL.'assets/js/lazyload.min.js', array('jquery'), GDK_PLUGIN_VER, true);
|
||||
|
@ -20,4 +35,11 @@ function nc_optimizeup_enqueue_script_frontend() {
|
|||
|
||||
}
|
||||
}
|
||||
add_action('wp_enqueue_scripts', 'nc_optimizeup_enqueue_script_frontend');
|
||||
add_action('wp_enqueue_scripts', 'nc_optimizeup_enqueue_script_frontend');
|
||||
|
||||
|
||||
//
|
||||
function gdk_admin_assets() {
|
||||
gdk_admin_script();
|
||||
}
|
||||
add_action('admin_footer','gdk_admin_assets');
|
1
assets/js/paste-upload-image.js
Normal file
1
assets/js/paste-upload-image.js
Normal file
|
@ -0,0 +1 @@
|
|||
(function(f){var e,g="";f.fn.pasteUploadImage=function(b){e=f(this);g=b;e.on("paste",function(a){var b;var d=a.originalEvent;if(d.clipboardData&&d.clipboardData.items&&(b=isImage(d)))return a.preventDefault(),a=getFilename(d)||"image.png",pasteText("{{"+a+"(uploading...)}}"),uploadFile(b.getAsFile(),a)});e.on("drop",function(a){var b;var d=a.originalEvent;if(d.dataTransfer&&d.dataTransfer.files&&(b=isImageForDrop(d)))return a.preventDefault(),a=d.dataTransfer.files[0].name||"image.png",pasteText("{{"+a+"(uploading...)}}"),uploadFile(b,a)})};pasteText=function(b){var a=e[0].selectionStart;var c=e[0].selectionEnd;var d=e.val().length;var f=e.val().substring(0,a);d=e.val().substring(c,d);e.val(f+b+d);e.get(0).setSelectionRange(a+b.length,c+b.length);return e.trigger("input")};isImage=function(b){var a;for(a=0;a<b.clipboardData.items.length;){var c=b.clipboardData.items[a];if(-1!==c.type.indexOf("image"))return c;a++}return!1};isImageForDrop=function(b){var a;for(a=0;a<b.dataTransfer.files.length;){var c=b.dataTransfer.files[a];if(-1!==c.type.indexOf("image"))return c;a++}return!1};getFilename=function(b){var a;window.clipboardData&&window.clipboardData.getData?a=window.clipboardData.getData("Text"):b.clipboardData&&b.clipboardData.getData&&(a=b.clipboardData.getData("text/plain"));a=a.split("\r");return a[0]};getMimeType=function(b,a){b=b.type;a=a.substring(a.lastIndexOf(".")+1);return b!="image/"+a?"image/"+a:b};uploadFile=function(b,a){var c=new FormData;c.append("imageFile",b);c.append("mimeType",getMimeType(b,a));c.append("action","gdk_pasteup_imag");f.ajax({url:g,data:c,type:"post",processData:!1,contentType:!1,dataType:"json",xhrFields:{withCredentials:!0},success:function(b){return b.success?insertToTextArea(a,b.message):replaceLoadingTest(a)},error:function(b,c){replaceLoadingTest(a);console.log(b.responseText)}})};insertToTextArea=function(b,a){return e.val(function(c,d){return d.replace("{{"+b+"(uploading...)}}",'<a href="'+a+'"><img src="'+a+'" class="aligncenter size-full" /></a>\n')})};replaceLoadingTest=function(b){return e.val(function(a,c){return c.replace("{{"+b+"(uploading...)}}",b+"\n")})}})(jQuery);
|
|
@ -16,4 +16,45 @@ add_action('wp_ajax_nopriv_gdk_test_email', 'gdk_test_email');
|
|||
add_action('wp_ajax_gdk_test_email', 'gdk_test_email');
|
||||
|
||||
|
||||
|
||||
//粘贴上传图片
|
||||
function gdk_pasteup_imag() {
|
||||
if($_FILES) {
|
||||
global $post;
|
||||
$post_ID = $post->ID;
|
||||
$wp_upload_dir = wp_upload_dir();
|
||||
$file = $_FILES["imageFile"];
|
||||
$result=array ("success"=>false,"message"=>"Null");
|
||||
if (in_array($file["type"],array ("image/gif","image/jpeg","image/pjpeg","image/png"))) {
|
||||
if ($file["error"]>0) {
|
||||
$result['message']="error";
|
||||
} else {
|
||||
$file_name = md5_file($file["tmp_name"]).str_replace("image/",".",$file["type"]);//img name
|
||||
$file_url = $wp_upload_dir['url']."/".$file_name;
|
||||
$file_path = $wp_upload_dir['path']."/".$file_name;
|
||||
if (!file_exists($file_path)) {
|
||||
move_uploaded_file($file["tmp_name"],$file_path);
|
||||
$attachment = [
|
||||
'guid' => $wp_upload_dir['url'] . '/' . basename( $file_path ),
|
||||
'post_mime_type' => $file['type'],
|
||||
'post_title' => $file_name,
|
||||
'post_content' => '',
|
||||
'post_status' => 'inherit'
|
||||
];
|
||||
$attach_id = wp_insert_attachment( $attachment, $file_name, $post_ID);
|
||||
//这是wp内置的上传附件的函数
|
||||
require_once( ABSPATH . 'wp-admin/includes/image.php' );
|
||||
$attach_data = wp_generate_attachment_metadata( $attach_id, $file_path );
|
||||
wp_update_attachment_metadata( $attach_id, $attach_data );
|
||||
}
|
||||
$result['success']= true;
|
||||
$result['message']= $file_url;
|
||||
}
|
||||
} else {
|
||||
$result['message']="Invalid file";
|
||||
}
|
||||
echo(json_encode($result));
|
||||
exit();
|
||||
}
|
||||
}
|
||||
add_action('wp_ajax_nopriv_gdk_pasteup_imag', 'gdk_pasteup_imag');
|
||||
add_action('wp_ajax_gdk_pasteup_imag', 'gdk_pasteup_imag');
|
|
@ -232,6 +232,32 @@ if(gdk_option('gdk_upload_rename')) {
|
|||
add_filter('wp_handle_upload_prefilter', 'gdk_upload_rename' );
|
||||
}
|
||||
|
||||
// 禁用自动生成的图片尺寸
|
||||
function shapeSpace_disable_image_sizes($sizes) {
|
||||
|
||||
unset($sizes['thumbnail']); // disable thumbnail size
|
||||
unset($sizes['medium']); // disable medium size
|
||||
unset($sizes['large']); // disable large size
|
||||
unset($sizes['medium_large']); // disable medium-large size
|
||||
unset($sizes['1536x1536']); // disable 2x medium-large size
|
||||
unset($sizes['2048x2048']); // disable 2x large size
|
||||
|
||||
return $sizes;
|
||||
|
||||
}
|
||||
add_action('intermediate_image_sizes_advanced', 'shapeSpace_disable_image_sizes');
|
||||
|
||||
// 禁用缩放尺寸
|
||||
add_filter('big_image_size_threshold', '__return_false');
|
||||
|
||||
// 禁用其他图片尺寸
|
||||
function shapeSpace_disable_other_image_sizes() {
|
||||
|
||||
remove_image_size('post-thumbnail'); // disable images added via set_post_thumbnail_size()
|
||||
remove_image_size('another-size'); // disable any other added image sizes
|
||||
|
||||
}
|
||||
add_action('init', 'shapeSpace_disable_other_image_sizes');
|
||||
|
||||
// 搜索结果为1时候自动跳转到对应页面
|
||||
function gdk_redirect_single_search_result() {
|
||||
|
|
Loading…
Reference in a new issue