wp_die函数导致网页错位的完美替代方案
作者:秋了秋 发表时间:2014年07月10日
wp_die是一个大家很熟悉的函数,几乎每个wordpress主题都会有,一般都用在判断语句if后面的错误提示信息,但是我的主题没有,我不允许这么个东西出现在我的网页上,之前折腾过含有wp_die的代码,发现该函数特别流氓,动不动就造成网页错位,只要一提交了表单返回html值的时候,网页就会错乱,且很多东西加载不出来,这个函数就像抽刀断水一样,一执行到该函数的时候,进程立马停止,网页后面的内容全部作废。
函数一般出现的地方示例:
// 表单项数据验证 if ( empty($name) || mb_strlen($name) > 20 ) { wp_die('昵称必须填写,且长度不得超过20字'); }
wp_die后面跟踪的是提示信息,即显示给用户看的文字,之后就断开了网页的所有加载,网页布局错乱便随之而来。
之前做ajax评论的时候,也是从网上抄的代码也是wp_die来做提示信息,后来改成err错误提示才解决错位问题,如下:
if ( $flood_die ) { err(__('<font color=Red>您发表评论也太快了so fast!</font>')); } }
其完整结构即为
err(__......)
但这貌似只能用于ajax页面下使用,最近在制作一个投稿页面,同样网上有很多代码,但都是要用到wp_die函数,除此之外还有很多不足之处,经过我一步步的测试,发现用err(__)是不行的啦,会报错。最终测试echo函数发现完美解决问题,由此可见echo是php通用函数,应该在所有php页面都适用的。代码示例:
if ( empty($title) || mb_strlen($title) > 100 ) { echo '<br/><br/><br/><br/><div class="errormsg">标题必须填写,且长度不得超过100字。</div><br/><br/><br/><br/>';get_footer();die(); } if ( empty($content) || mb_strlen($content) > 10000 || mb_strlen($content) < 100) { echo '<br/><br/><br/><br/><div class="errormsg">内容必须填写,且长度不得超过10000字,不得少于100字。</div><br/><br/><br/><br/>';get_footer();die(); }
因为这是判断语句,条件不成立就不能让它执行之后的操作,所以可以用die();来终止操作,不能用wp_die,在终止操作之前必须把该做的事情办完,比如说get_footer();否则网页只能显示一部分,后面的比如说页脚将加载不出来,所以在die();前面加上get_footer();,还有如果页面带有独立css,请把独立css放在该页面的前面,即die();的前面,一般放在网页的<?php get_header(); ?>后面。
0
文章作者: “秋了秋”个人博客,本站鼓励原创。
转载请注明本文地址:http://netblog.cn/blog/47.html