forked from owen0o0/WebStack
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request owen0o0#1 from owen0o0/master
merge origin master
- Loading branch information
Showing
18 changed files
with
574 additions
and
40 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -85,4 +85,4 @@ | |
<?php echo io_get_option('code_2_footer');?> | ||
<!-- end 自定义代码 --> | ||
</body> | ||
</html> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
<?php | ||
/** | ||
* 弃用,已经移至ajax.php | ||
*/ | ||
if ( 'POST' != $_SERVER['REQUEST_METHOD'] ) { | ||
header('Allow: POST'); | ||
header('HTTP/1.1 405 Method Not Allowed'); | ||
header('Content-Type: text/plain'); | ||
exit; | ||
} | ||
|
||
require dirname(__FILE__).'/../../../../wp-load.php'; | ||
nocache_headers(); | ||
|
||
if( isset($_COOKIE["tougao"]) && ( time() - $_COOKIE["tougao"] ) < 120 ){ | ||
error('{"status":2,"msg":"您投稿也太勤快了吧,先歇会儿!"}'); | ||
} | ||
|
||
//表单变量初始化 | ||
$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()+30); | ||
error('{"status":1,"msg":"投稿成功!"}'); | ||
}else{ | ||
error('{"status":4,"msg":"投稿失败!"}'); | ||
} | ||
|
||
function error($ErrMsg) { | ||
echo $ErrMsg; | ||
exit; | ||
} |
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
<?php | ||
/** | ||
* WordPress 投稿页上传图片,支持游客上传 | ||
* 原文地址: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'); | ||
header('Content-Type: text/plain'); | ||
exit; | ||
} | ||
|
||
require dirname(__FILE__).'/../../../../wp-load.php'; | ||
nocache_headers(); | ||
|
||
$extArr = array("jpg", "png", "jpeg"); | ||
$file = $_FILES['files']; | ||
if ( !empty( $file ) ) { | ||
$wp_upload_dir = wp_upload_dir(); // 获取上传目录信息 | ||
$basename = $file['name']; | ||
$basesize = $file['size']; | ||
$baseext = pathinfo($basename, PATHINFO_EXTENSION); | ||
/* 使用前台 js 判断 | ||
if (!in_array($baseext, $extArr)) { | ||
echo '{"status":3,"msg":"图片类型只能是jpeg,jpg,png!"}'; | ||
exit(); | ||
} | ||
if ($basesize > (1000 * 1024)) { | ||
echo '{"status":3,"msg":"图片大小不能超过1M"}'; | ||
exit(); | ||
} | ||
*/ | ||
$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'=>time())))); | ||
exit(); | ||
}else{ | ||
echo '{"status":4,"msg":"图片上传失败!"}'; | ||
exit(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.