我正在一个wordpress网站上为一个大学项目写一篇关于涂黑诗歌的文章,在那里用户可以涂黑部分文本来创作一首诗。
在用户创作完他的诗歌后,我们需要让他能够将用户生成的内容上传到我们的服务器,这样我们在检查并批准内容后,就可以将其发布在网站的主“墙上”。
这是我的第一个web开发项目,我已经阅读了大量相关教程(字面上,每一个都是……),虽然我的html/javascript/jQuery技能正在提高,但PHP和ajax调用(这似乎是这种工作所必需的)仍然远远超出我的能力范围,我没有时间好好学习它们,因为最后期限还有两周。
教程和答案如下this 和this 建议首先使用html2canvas(我成功地做到了这一点)获取段落的修改内容,然后使用表单或对PHP函数的AJAX调用将base64编码的PNG上传到服务器,在服务器上解码并保存到/wp content/uploads。不幸的是,他们没有讨论如何在wordpress中处理事情,我可能遗漏了一些非常明显的东西。
我试着从this 文章,看看它是否在我的wordpress站点中起作用(以便我可以修改):我将PHP函数放在我使用的主题文件夹中,但即使当我按下上传按钮时弹出成功上传的消息,也不会发生任何事情。我应该在函数中添加一些内容吗。还有php?
这是我目前的代码:
HTML
<div id="target"> // the text that the user interacts with
<p>Lorem ipsum......</p>
</div>
<br/>
<h3>Preview:</h3>
<div id="previewImage"> // where the preview of the image is displayed
</div>
<input id="Preview-Image" type="button" value="Preview"/>
<a id="download-btn" href="#">
Download
</a>
脚本:
<script>
$(document).ready(function(){
var element = $("#target");
var getCanvas;
$("#Preview-Image").on(\'click\', function () {
html2canvas(element, {
onrendered: function (canvas) {
$("#previewImage").append(canvas);
getCanvas = canvas;
}
});
});
$("#download-btn").on(\'click\', function () {
var imgData = getCanvas.toDataURL("image/png");
// this bit lets the user download the PNG file
var newData = imgData.replace(/^data:image\\/png/, "data:application/octet-stream");
$("#btn-Convert-Html2Image").attr("download", "your_pic_name.jpg").attr("href", newData);
});
});
在这一点上,根据我所读的内容,我应该包括这样一个AJAX调用:
$.ajax({
url: \'/wp-admin/admin-ajax.php\',
dataType: \'json\',
method: \'post\',
data: {action:\'save_poem\',img:\'your-image-data-etc\'},
success: function(response){ //server success response },
error: function(err){ //server error response }
})
。。。并在主题功能中包含save\\u诗歌。php:
function save_poem_image(){
//code to process and save image
}
add_action("wp_ajax_save_poem", "save_poem_image");
add_action("wp_ajax_nopriv_save_poem", "save_poem_image");
现在,我的问题是:以上步骤正确吗?我应该在save\\u poem中放入什么来代替“/”代码来处理和保存图像?应该是PHP代码来解码和保存图像吗?否则,有没有更简单的方法来实现我的想法?
提前感谢!