Skip to content

Commit

Permalink
添加图片删除按钮
Browse files Browse the repository at this point in the history
投稿面板文件名称修改
  • Loading branch information
owen0o0 committed Dec 27, 2019
1 parent d39ff3f commit 1ec9286
Show file tree
Hide file tree
Showing 8 changed files with 194 additions and 36 deletions.
5 changes: 4 additions & 1 deletion css/nav.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

127 changes: 127 additions & 0 deletions inc/ajax.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
<?php
if ( ! defined( 'ABSPATH' ) ) { exit; }

//图片上传
add_action('wp_ajax_nopriv_img_upload', 'io_img_upload');
add_action('wp_ajax_img_upload', 'io_img_upload');
function io_img_upload(){
$extArr = array("jpg", "png", "jpeg");
$file = $_FILES['files'];
if ( !empty( $file ) ) {
$wp_upload_dir = wp_upload_dir(); // 获取上传目录信息
$basename = $file['name'];
$baseext = pathinfo($basename, PATHINFO_EXTENSION);
$dataname = date("YmdHis_").substr(md5(time()), 0, 8) . '.' . $baseext;
$filename = $wp_upload_dir['path'] . '/' . $dataname;
rename( $file['tmp_name'], $filename ); // 将上传的图片文件移动到上传目录
$attachment = array(
'guid' => $wp_upload_dir['url'] . '/' . $dataname, // 外部链接的 url
'post_mime_type' => $file['type'], // 文件 mime 类型
'post_title' => preg_replace( '/\.[^.]+$/', '', $basename ), // 附件标题,采用去除扩展名之后的文件名
'post_content' => '', // 文章内容,留空
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $filename ); // 插入附件信息
if($attach_id != 0){
require_once( ABSPATH . 'wp-admin/includes/image.php' ); // 确保包含此文件,因为wp_generate_attachment_metadata()依赖于此文件。
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data ); // 生成附件的元数据,并更新数据库记录。
print_r(json_encode(array('status'=>1,'msg'=>'图片添加成功','data'=>array('id'=>$attach_id,'src'=>wp_get_attachment_url( $attach_id ),'title'=>$basename))));
exit();
}else{
echo '{"status":4,"msg":"图片上传失败!"}';
exit();
}
}
}

//删除图片
add_action('wp_ajax_nopriv_img_remove', 'io_img_remove');
add_action('wp_ajax_img_remove', 'io_img_remove');
function io_img_remove(){
$attach_id = $_POST["id"];
if( empty($attach_id) ){
echo '{"status":3,"msg":"没有上传图像!"}';
exit;
}
if ( false === wp_delete_attachment( $attach_id ) )
echo '{"status":4,"msg":"图片 '.$attach_id.' 删除失败!"}';
else
echo '{"status":1,"msg":"删除成功!"}';
exit;
}

//提交文章
add_action('wp_ajax_nopriv_contribute_post', 'io_contribute');
add_action('wp_ajax_contribute_post', 'io_contribute');
function io_contribute(){
$delay = 40;
if( isset($_COOKIE["tougao"]) && ( time() - $_COOKIE["tougao"] ) < $delay ){
error('{"status":2,"msg":"您投稿也太勤快了吧,'. ($delay - ( time() - $_COOKIE["tougao"] )).'秒后再试!"}');
}

//表单变量初始化
$sites_link = isset( $_POST['tougao_sites_link'] ) ? trim(htmlspecialchars($_POST['tougao_sites_link'], ENT_QUOTES)) : '';
$sites_sescribe = isset( $_POST['tougao_sites_sescribe'] ) ? trim(htmlspecialchars($_POST['tougao_sites_sescribe'], ENT_QUOTES)) : '';
$title = isset( $_POST['tougao_title'] ) ? trim(htmlspecialchars($_POST['tougao_title'], ENT_QUOTES)) : '';
$category = isset( $_POST['tougao_cat'] ) ? $_POST['tougao_cat'] : '0';
$sites_ico = isset( $_POST['tougao_sites_ico'] ) ? trim(htmlspecialchars($_POST['tougao_sites_ico'], ENT_QUOTES)) : '';
$wechat_qr = isset( $_POST['tougao_wechat_qr'] ) ? trim(htmlspecialchars($_POST['tougao_wechat_qr'], ENT_QUOTES)) : '';
$content = isset( $_POST['tougao_content'] ) ? trim(htmlspecialchars($_POST['tougao_content'], ENT_QUOTES)) : '';

// 表单项数据验证
if ( $category == "0" ){
error('{"status":4,"msg":"请选择分类。"}');
}
if ( !empty(get_term_children($category, 'favorites'))){
error('{"status":4,"msg":"不能选用父级分类目录。"}');
}
if ( empty($sites_sescribe) || mb_strlen($sites_sescribe) > 50 ) {
error('{"status":4,"msg":"网站描叙必须填写,且长度不得超过50字。"}');
}
if ( empty($sites_link) && empty($wechat_qr) ){
error('{"status":3,"msg":"网站链接和公众号二维码至少填一项。"}');
}
elseif ( !empty($sites_link) && !preg_match('/http(s)?:\/\/[\w.]+[\w\/]*[\w.]*\??[\w=&\+\%]*/is', $sites_link)) {
error('{"status":4,"msg":"网站链接必须符合URL格式。"}');
}
if ( empty($title) || mb_strlen($title) > 30 ) {
error('{"status":4,"msg":"网站名称必须填写,且长度不得超过30字。"}');
}
//if ( empty($content) || mb_strlen($content) > 10000 || mb_strlen($content) < 6) {
// error('{"status":4,"msg":"内容必须填写,且长度不得超过10000字,不得少于6字。"}');
//}

$tougao = array(
'comment_status' => 'closed',
'ping_status' => 'closed',
//'post_author' => 1,//用于投稿的用户ID
'post_title' => $title,
'post_content' => $content,
'post_status' => 'pending',
'post_type' => 'sites',
//'tax_input' => array( 'favorites' => array($category) ) //游客不可用
);

// 将文章插入数据库
$status = wp_insert_post( $tougao );
if ($status != 0){
global $wpdb;
add_post_meta($status, '_sites_sescribe', $sites_sescribe);
add_post_meta($status, '_sites_link', $sites_link);
add_post_meta($status, '_sites_order', '0');
if( !empty($sites_ico))
add_post_meta($status, '_thumbnail', $sites_ico);
if( !empty($wechat_qr))
add_post_meta($status, '_wechat_qr', $wechat_qr);
wp_set_post_terms( $status, array($category), 'favorites'); //设置文章分类
setcookie("tougao", time(), time()+$delay+10);
error('{"status":1,"msg":"投稿成功!"}');
}else{
error('{"status":4,"msg":"投稿失败!"}');
}
}
function error($ErrMsg) {
echo $ErrMsg;
exit;
}
6 changes: 4 additions & 2 deletions inc/contribute-ajax.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<?php

/**
* 弃用,已经移至ajax.php
*/
if ( 'POST' != $_SERVER['REQUEST_METHOD'] ) {
header('Allow: POST');
header('HTTP/1.1 405 Method Not Allowed');
Expand Down Expand Up @@ -77,4 +79,4 @@
function error($ErrMsg) {
echo $ErrMsg;
exit;
}
}
7 changes: 5 additions & 2 deletions inc/img-upload.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@
* 原文地址:https://www.iowen.cn/wordpress-visitors-upload-pictures
* 一为忆
* WebStack 导航主题
*
* 弃用,已经移至ajax.php
*/

if ( 'POST' != $_SERVER['REQUEST_METHOD'] ) {
header('Allow: POST');
header('HTTP/1.1 405 Method Not Allowed');
Expand Down Expand Up @@ -48,10 +51,10 @@
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data ); // 生成附件的元数据,并更新数据库记录。
// 返回消息至前端
print_r(json_encode(array('status'=>1,'msg'=>'图片添加成功','data'=>array('src'=>wp_get_attachment_url( $attach_id ),'title'=>time()))));
print_r(json_encode(array('status'=>1,'msg'=>'图片添加成功','data'=>array('id'=>$attach_id,'src'=>wp_get_attachment_url( $attach_id ),'title'=>time()))));
exit();
}else{
echo '{"status":4,"msg":"图片上传失败!"}';
exit();
}
}
}
1 change: 1 addition & 0 deletions inc/inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
require_once get_theme_file_path() .'/inc/post-type.php';
require_once get_theme_file_path() .'/inc/fav-content.php';
require_once get_theme_file_path() .'/inc/meta-boxes.php';
require_once get_theme_file_path() .'/inc/ajax.php';


// 禁用版本修订
Expand Down
3 changes: 2 additions & 1 deletion inc/register.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,9 @@ function theme_load_scripts() {
wp_enqueue_script( 'comment-reply' );
}
}
wp_localize_script('app', 'Theme' , array(
wp_localize_script('appjs', 'theme' , array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'addico' => get_template_directory_uri() . '/images/add.png',
));
}
add_action('wp_enqueue_scripts', 'theme_load_scripts');
Expand Down
2 changes: 1 addition & 1 deletion style.css
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Theme Name:WebStack
Theme URI:https://www.iowen.cn
Description:by 一为!官方网站:<a href="https://www.iowen.cn">一为忆</a>
Version:1.1225
Version:1.1227
Author:iowen
Author URI: https://www.iowen.cn/
*/
79 changes: 50 additions & 29 deletions contribute.php → template-contribute.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,9 @@
<div class="upload_img">
<div class="show_ico">
<img id="show_sites_ico" src="<?php echo get_template_directory_uri() . '/images/add.png' ?>" alt="网站图标">
<i id="remove_sites_ico" class="fa fa-times-circle remove" data-id="" data-type="sites_ico" style="display: none;"></i>
</div>
<input type="file" id="upload_ico" data-type="sites_ico" accept="image/*" onchange="uploadImg(this)" >
<input type="file" id="upload_sites_ico" data-type="sites_ico" accept="image/*" onchange="uploadImg(this)" >
</div>
</div>
<div class="row">
Expand Down Expand Up @@ -87,9 +88,10 @@
<input type="hidden" value="" id="tougao_wechat_qr" name="tougao_wechat_qr" />
<div class="upload_img wechat">
<div class="show_ico">
<img id="show_wechat_qr" src="<?php echo get_template_directory_uri() . '/images/add.png' ?>" alt="网站图标">
<img id="show_wechat_qr" src="<?php echo get_template_directory_uri() . '/images/add.png' ?>" alt="公众号二维码">
<i id="remove_wechat_qr" class="fa fa-times-circle remove" data-id="" data-type="wechat_qr" style="display: none;"></i>
</div>
<input type="file" id="upload_ico" data-type="wechat_qr" accept="image/*" onchange="uploadImg(this)" >
<input type="file" id="upload_wechat_qr" data-type="wechat_qr" accept="image/*" onchange="uploadImg(this)" >
</div>
</div>
<div class="col-sm-9 col-md-10 mt-2">
Expand All @@ -113,11 +115,7 @@
</div>
</div>
</div>

<?php
$imgUpload = get_bloginfo('template_directory') . '/inc/img-upload.php';
$contribute = get_bloginfo('template_directory') . '/inc/contribute-ajax.php';
?>

<script>
var verification = Math.floor(Math.random()*(9999-1000+1)+1000);
$('#verification-text').text(verification);
Expand All @@ -127,23 +125,21 @@
showAlert(JSON.parse('{"status":3,"msg":"验证码错误!"}'));
return false;
}
$.ajax( {
url: '<?php echo $contribute ?>',
$.ajax({
url: theme.ajaxurl,
type: 'POST',
dataType: 'json',
data: $(this).serialize(),
error: function(result) {
showAlert(JSON.parse('{"status":3,"msg":"网络连接错误!"}'));
},
success: function(result) {
if(result.status == 1){
verification = Math.floor(Math.random()*(9999-1000+1)+1000);
$('#verification-text').text(verification);
}
showAlert(result);
data: $(this).serialize() + "&action=contribute_post",
}).done(function (result) {
if(result.status == 1){
verification = Math.floor(Math.random()*(9999-1000+1)+1000);
$('#verification-text').text(verification);
}
showAlert(result);
}).fail(function (result) {
showAlert(JSON.parse('{"status":3,"msg":"网络连接错误!"}'));
});
return false;
return false;
});
function showAlert(data) {
var alert,ico;
Expand Down Expand Up @@ -171,10 +167,7 @@ function showAlert(data) {
$('#alert_placeholder').append( $html );//prepend
$html.show(100).delay(3000).hide(200, function(){ $(this).remove() });
}
function uploadImg(obj) {
upload(obj)
}
function upload(file) {
function uploadImg(file) {
var doc_id=file.getAttribute("data-type");
if (file.files != null && file.files[0] != null) {
if (!/\.(jpg|jpeg|png|JPG|PNG)$/.test(file.files[0].name)) {
Expand All @@ -187,20 +180,23 @@ function upload(file) {
}
var formData = new FormData();
formData.append('files', file.files[0]);
formData.append('action','img_upload');
$.ajax({
url: '<?php echo $imgUpload ?>',
url: theme.ajaxurl,
type: 'POST',
cache: false,
data: formData,
dataType: 'json',
cache: false,
processData: false,
contentType: false
}).done(function (result) {
//console.log('--->>>'+JSON.stringify(result));
showAlert(result);
if(result.status == 1){
document.getElementById("show_"+doc_id).src = result.data.src;
document.getElementById("tougao_"+doc_id).value = result.data.src;
$("#show_"+doc_id).attr("src", result.data.src);
$("#tougao_"+doc_id).val(result.data.src);
$("#remove_"+doc_id).data('id',result.data.id).show();
$(file).attr("disabled","disabled").parent().addClass('disabled');
}
}).fail(function (result) {
showAlert(JSON.parse('{"status":3,"msg":"网络连接错误!"}'));
Expand All @@ -210,6 +206,31 @@ function upload(file) {
return false;
}
}
$('.fa.remove').click(function() {
if(!confirm('确定要删除图片吗?')){
return false;
}
var doc_id = $(this).data('type');
$.ajax( {
url: theme.ajaxurl,
type: 'POST',
dataType: 'json',
data: {
action: "img_remove",
id: $(this).data("id")
}
}).done(function (result) {
showAlert(result);
if(result.status == 1){
$("#show_"+doc_id).attr("src", theme.addico);
$("#tougao_"+doc_id).val('');
$("#remove_"+doc_id).data('id','').hide();
$("#upload_"+doc_id).removeAttr("disabled").val("").parent().removeClass('disabled');
}
}).fail(function (result) {
showAlert(JSON.parse('{"status":3,"msg":"网络连接错误!"}'));
});
});
</script>

<?php get_footer(); ?>
Expand Down

0 comments on commit 1ec9286

Please sign in to comment.