前几天在张戈论坛上看到WordPress评论滑动/拉链解锁myQaptcha修改为自动提交的方法,就想搬到自己的网站,但碰到各种坑,因为我的主题没有comments-ajax.js这个文件,这么办,当然是遇到坑就填。
首页安装张戈的方法吧代码引入主题,然后在提交按钮的位置添加滑动按钮<div id="autosubmit"></div>然后隐藏默认按钮,坑来了,我主题没有<input id="submit"...这按钮,是用comment_form()设置的评论框,oo! 截至到现在,我就一两个月的建站经验,好,各种google。问题到是解决了,下面以我目前的主题Newspaper主题为例介绍修改方法。
修改includes\wp_booster\comments.php文件
/*-----这选择框如果想默认勾选,可以添加checked="checked"属性 'cookies' => '<p class="comment-form-cookies-consent"><input checked="checked" id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes"' . $consent . ' />' . '<label for="wp-comment-cookies-consent">' . __td( 'Save my name, email, and website in this browser for the next time I comment.' ) . '</label></p>' . '<div id="autosubmit"></div>',//加在这
//在comment_form下面添加提交按钮样式 comment_form($defaults); //提交按钮添加样式style="display:none;"隐藏提交按钮 echo str_replace('id="submit"','id="submit" style="display:none;"',ob_get_clean());
好了,打开文章看一下,oo! 没提交按钮了,什么都没有,换个浏览器试试,oo! 有滑动按钮啊。。。找原因...原来没有按钮的页面是我登陆了,而我把这按钮添加到了cookies位置下面,就是“记住我”复选框下面,而登陆之后是没有这个选择框的,所以就这样了。继续改...把它加到评论框下面,问题是可以解决,但是游客看到的就是这样了oo!
感觉不好看哈。。。找解决方案,找能不能调整输入框的顺序,把评论输入框放到最下面,没找到。。。找有没有添加到评论模块下面的钩子,也没找到,水平有限,搞了个笨方法
... $defaults['comment_notes_before'] = ''; $defaults['comment_notes_after'] = ''; //添加下面这行,各路大神有什么好方法还请告诉我,谢谢 $defaults['submit_field'] = '<div id="autosubmit"></div><p class="form-submit">%1$s %2$s</p>'; $defaults['title_reply'] = __td('LEAVE A REPLY', TD_THEME_NAME); $defaults['label_submit'] = __td('Post Comment', TD_THEME_NAME); ...
布局解决了,现在修改提交方法,因为没有主题没有comments-ajax.js这个文件,所以只能修改其他地方了,不扯了,直接贴代码,修改myqaptcha\jquery\myqaptcha.jquery.js文件
... // 获取输入框 var iComment = document.getElementById('comment'); var iAuthor = document.getElementById('author'); var iEmail = document.getElementById('email'); var defaults = { txtLock : '请滑动提交评论', txtUnlock : '正在提交...', disabledSubmit : false, autoRevert : true, PHPfile : myQaptchaJqueryPage, autoSubmit : true }; // 判断空字符 function isNull(val) { var str = val.replace(/(^\s*)|(\s*$)/g, '');//去除空格; if (str == '' || str == undefined || str == null) { return true; //console.log('空') } else { return false; //console.log('非空'); } } // 判断邮箱 function isEmail(val){ var reg = new RegExp(/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/); if(!reg.test(val)) { return false; //alert("Email格式错误!"); } else { return true; //console.log('非空'); } } if(this.length>0) return jQuery(this).each(function(i) { ... Slider.draggable({ revert: function(){ if(opts.autoRevert) { // 将下面的150改成160,解决页面可以重复提交的问题,呵呵...笨人笨方法啊 if(parseInt(Slider.css("left")) > 160) return false; else return true; } }, containment: bgSlider, axis:'x', stop: function(event,ui){ if(ui.position.left > 150){ jQuery.post(opts.PHPfile,{ action : '30corg', myQaptcha : inputQapTcha.attr('name') }, function(data) { if(!data.error){ //Slider.draggable('disable').css('cursor','default'); inputQapTcha.val(''); //添加输入框内容判断,只有正确输入才显示“正在提交...” if((iEmail==null && !isNull(iComment.value)) || (!isNull(iComment.value) && !isNull(iAuthor.value) && !isNull(iEmail.value) && isEmail(iEmail.value))){ TxtStatus.text(opts.txtUnlock).addClass('dropSuccess').removeClass('dropError'); Icons.css('background-position', '-16px 0'); } form.find('input[type=\'submit\']').removeAttr('disabled'); if(opts.autoSubmit) form.find('input[type=\'submit\']').trigger('click'); } },'json'); } } }); ...
好了,这样差不多就解决问题了,可以用了,而且应该所以主题都可以用把。
部署代码
下载附件,将 myqaptcha 文件夹放到主题目录,编辑 WordPress 主题目录下的 functions.php,在<?php 之后添加如下代码保存即可:
include("myqaptcha/myQaptcha.php");
好了,效果可以到下面评论框体验。上面说的问题有更好的方法也麻烦告诉我。
111 ( VIP 1 )
江苏好久没玩wp了
凯少 ( VIP 1 )
广东貌似玩wp的好多,wp感觉好高档
owen ( VIP 1 )
湖南试试评论条