您的位置:首页 > 其它

WORDPRESS and plugin

2012-07-29 00:44 246 查看
IjustlearningWORDPRESSamonthrecently,therearesomeaspectsinWORDPRESS:


WORDPRESStheme

WORDPRESSsecurity

SEOforWORDPRESS

WORDPRESSplugin



其中WORDPRESSplugin应该是最麻烦的。它有太多的API,因此当你不了解WORDPRESSplugin的API时,therearetoomanydifficultiesinit.

其中WORDPRESSplugin需要考虑的API包括

1.createmenu:


1.createatop-levelmenu(add_menu_page–>function)

2.createasubmenu(添加子菜单到一个新创建的菜单中—>并且要有menuicon)–>add_submenu_page

3.添加子菜单到已经存在的一级菜单中(add_options_page-->function)



2.createwidgetorgadget


1.在后台创建widget,包括后台widget的显示,form(),display(),widget(),update()方法等

2.在dashboard创建widget.

3.widget结合option一起应用



3.addcustommetafield


1.buildaform(itcontainsselect,textfield,multipletext,checkbox,uploadfileetc.)

2.makecustomformfieldvaluefilledindatabase.

3.useWORDPRESSUItobeautifytheform



4.accomplishInternationalization

5.addpluginsecurity

6.integratecustomtableinWORDPRESS

7.manageusers


1.adduserrole

2.adduser(add_user_meta,delete_user_meta),modifyuser,deleteuseretc.

3.checkuserpermission



8.addnewcustomtype


1.createnewtype(forexample:addmusictype)

2.addSHORTCODE



9.createnewrewriterule


1.writeanewruleforpagepath.



8.添加插件的设置,插件的删除,插件的激活配置等一系列的action.

对于常见hook的总结:

action:


plugins_loaded当插件加载时

init当WORDPRESS运行时发生

wp_head



wp_foot

add_admin当登陆到管理员后台时发生



filter:


the_content当网页的内容加载时

the_title当页面标题加载时

sing_template当应用singtemplate时发生



验证

数字(不包括浮点)判断:intval()oris_int()ctype_digit($num)

return(ctype_alpha($num));

//Validatephonenumberslike123-456-7890
functionboj_validate_phone($num){
returnpreg_match(‘/^\d{3}-\d{3}-\d{4}$/’,$num);
}

电话号码:

functionboj_validate_phone($num){
returnpreg_match(‘/^\d{3}-\d{3}-\d{4}$/’,$num);
}

邮箱:

sanitize_email:Filteredemailaddress.

forexample:


<?php
$sanitized_email=sanitize_email('éric@loremipsum.com!');
print$sanitized_email;//willoutput:'ric@loremipsum.com'
?>

判断邮箱:

is_email(sanitize_email($email))

HTML:

force_balance_tags:对HTML来进行修正

URL:

esc_url():TheURLtobecleaned.

esc_url()convertsampersandsandsinglequotesintoHTMLentitiestomakesure
displayingtheURLwillnotbreakanyoutput.To

$url=‘javascript:alert(“XSS”);’;

<?phpechoesc_url($url);?>

$url1=‘http://example.com/”<script>alert(\’XSS\’)</script>’;
var_dump(esc_url($url1));
//string(54)“http://example.com/scriptalert(‘XSS’)/script”

跳转

wp_redirect(“
适合:input元素中的value等

esc_html_e()esc_html_e()behavesthesameastheesc_html__()functionexceptthatitdisplaysthetranslated
textonthescreeninsteadofreturningit.Forexample,youmaybeaddingaformwithsome
defaulttextina<textarea>butwanttomakesurenoHTMLisshown.

DEMO:

<textareaname=”boj-text”id=”boj-text”>
<?phpesc_html_e(‘Pleaseinputadescription.’,‘boj-plugin’);?>
</textarea>

JS显示内容的国际化:

functionboj_show_alert_box_1(){
alert(boj_alert_box_L10n.boj_box_1);
}

/*Getscriptpathandfilename.*/
$script=trailingslashit(plugins_url('boj-alert-box')).'boj-alert-box-script.js';

/*Enqueueourscriptforuse.*/
wp_enqueue_script('boj-alert-box',$script,false,0.1);

/*LocalizetextstringsusedintheJavaScriptfile.*/
wp_localize_script('boj-alert-box','boj_alert_box_L10n',array(
'boj_box_1'=>__('Alertboxesareannoying!','boj-alert-box'),
'boj_box_2'=>__('Theyarereallyannoying!','boj-alert-box'),
));

插件引入其它文件的路径(包括在插件中引入JS,CSS,图片等)

plugin_dir_url

$plugin_url=plugin_dir_url(__FILE__);
//Enqueuescript
wp_enqueue_script(‘boj_script’,$plugin_url.’js/script.js’);

整合插件中的JS文件,并且提供国际化JS的输出内容

//Enqueuethescript,inthefooter
add_action('template_redirect','boj_arm_add_js');

functionboj_arm_add_js(){

//Enqueuethescript
wp_enqueue_script('boj_arm',
plugin_dir_url(__FILE__).'js/script.js',
array('jquery'),BOJ_ARM_VERSION,true
);

//Getcurrentpageprotocol
$protocol=isset($_SERVER["HTTPS"])?'https://':'http://';

//Outputadmin-ajax.phpURLwithsameprotocolascurrentpage
$params=array(
'ajaxurl'=>admin_url('admin-ajax.php',$protocol)
);

wp_localize_script('boj_arm','boj_arm',$params);
}

//css的引入

wp_enque_stylefunctionwe'veusedbeforetoincludeitintoapluginoryourthemethroughthefunctions.phppage:

IncludeaUIthemeintoaWordPressthemefromthetheme'sfunctions.phppageusingwp_enqueue_style:
...
<?php
functionaddUIstyles(){
wp_enqueue_style('ui-theme',bloginfo('stylesheet_directory')
'/js/smoothness/jquery-ui-1.8.custom.css',array('style'),'1.0','screen');
}
add_action('init','addUIstyles');
?>

IncludingaUIthemeintoaWordPresspluginusingwp_enqueue_style,is
similartotheaboveexample,butbesuretouseWP_PLUGIN_DIRtotarget
yourplugindirectory.
...
wp_enqueue_style('ui-theme',WP_PLUGIN_DIR.
.'/js/smoothness/jquery-ui-1.8.custom.css',
array('style'),'1.0','screen');

functionauthorCSS(){
//Thesevariablessettheurlanddirectorypaths:
$authorStyleUrl=
WP_PLUGIN_URL.'/add_author_bio-tbs/authover.css';
$authorStyleFile=
WP_PLUGIN_DIR.'/add_author_bio-tbs/authover.css';
//ifstatementchecksthatfiledoesexist
if(file_exists($authorStyleFile)){
//registersandevokesthestylesheet
wp_register_style('authorStyleSheet',$authorStyleUrl);
wp_enqueue_style('authorStyleSheet');
}
}

wp_register_style与wp_enqueue_style一般都结合起来使用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: