其实也没必要,我是比较折腾的人,爱折腾
1.首先需要给wordpress评论模板comments.php加上一个上传代码,css自己美化
<div class="upload_img"> <span> <input id="upload_img_api" type="file" accept="image/*"> <label class="custom-file-label upbtn" id="upload_img_label" for="upload_img_api" ><i class="fa fa-picture-o"></i>传图</label> </span> </div>
2.在wordpress functions.php写上函数,处理评论图片的短代码,第二行代码里a链接可以自己处理,我是加了fancybox插件点击放大图片
function boxmoe_comment_upload_img($content) { $content = preg_replace('/\[img=?\]*(.*?)(\[\/img)?\]/i', '<a href="$1" data-fancybox="images" data-fancybox-group="button"><img src="$1" alt="评论" /></a>', $content); return $content; } add_filter('comment_text', 'boxmoe_comment_upload_img');
3.加入js代码json post上传图片
jQuery('#upload_img_api').change(function() { window.wpActiveEditor = null; for (var i = 0; i < this.files.length; i++) { var f=this.files[i]; if (!/image\/\w+/.test(f.type)) { alert('请选择图片文件(png | jpg | gif)'); return } var formData=new FormData(); formData.append('pic',f); // pic 属于formData对象,这个根据图床的api不同可能需要更换 jQuery.ajax({ async:true, crossDomain:true, url:'https://img.jploc.jsmoe.com/up.php', //图床接口,这是我自己的图床,需要更换成你的图床接口 type : 'POST', processData : false, contentType : false, dataType: 'json', crossDomain: true, data:formData, beforeSend: function (xhr) { jQuery('#upload_img_label').html('<i class="fa fa-spinner rotating"></i> Uploading...'); }, success:function(res){ $('textarea[name="comment"]').val($('textarea[name="comment"]').val()+'[img]'+res.data.url+'[/img]').focus(); jQuery("#upload_img_label").html('<i class="fa fa-check"></i> 上传成功,继续上传'); }, error: function (){ jQuery("#upload_img_label").html('<i class="fa fa-times"></i> 上传失败,重新上传'); } }); } });
到处就结束了,这里需要你自己去美化CSS,和自己安排上wordpress评论传按钮的位置
博主,你好,请问宁能出个教程吗?我试了您的方法,一只没有成功
[img]https://cdn.jsdelivr.net/gh/baomihuahua/boxmoeimg@17d792df5e281078b18645702bd9fb1643c4f59c/2021/11/04/5ae55ad7ce5b65184cc24af3b712b2e1.png[/img]
看看,不错,不过就怕第三方的接口不稳定因素!
@ 山野愚人居 自建就好了,干嘛用第三方呢
请问博主一下,那个js代码加到哪个文件里面
@ 迷失 js可以放在和前端的任何位置
@ 专收爆米花 对不起,我好像有点没了解
好耶