注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

广莫之野,无何有之乡。

红尘中独处,独处,也拥抱红尘。

 
 
 
 
 

日志

 
 

wordpress编写一个简单的插件  

2015-05-21 10:35:06|  分类: 画风有变! |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
最近做了几个基于wordpress的小项目,深感:有时候用别人现成的繁复的主题/插件不如从0自己写——我需要的可能只是一根绣花针,而找到的多半是一个工具箱...

本文介绍了一个简单的wordpress插件编写的过程。
操刀之前,请打开http://codex.wordpress.org/Writing_a_Plugin,了解编写一个插件的基本需求/步骤,请仔细阅读WordPress Plugin Hooks部分,然后,我们开始吧。
1、建立插件目录。
在wp-content/plugins/下新建一个文件夹hellowanglong,在hellowanglong目录中新建一个文件hellowanglong.php。
2、编写插件header信息及licence。
全部的header信息可参考https://developer.wordpress.org/plugins/the-basics/header-requirements/,注意插件名称的独一无二,我开始给这个插件命名helloworld,结果一启动就提示有更新...那是人家已有的helloworld插件的更新囧rz...
作为一个开源软件,licence必不可少。
3、编写功能代码。
经过整理,所有内容都以注释的形式列出。
插件运行效果如下图右上角黑底黄字部分:
wordpress编写一个简单的插件 - 兔子 - 广莫之野,无何有之乡。

上图中全部代码(即这个插件的全部代码)如下:

<?php
/*
Plugin Name: Hello, wanglong!
Description: a plugin of Hello, wanglong!
Version: 1.0
Author: hancong
*/
/* Copyright 2015 hancong (email : hancong9104@163.com)

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/

/**本文中出现的所有wp官方函数及扩展都可以在https://codex.wordpress.org/Function_Reference/ 链接末尾缀上函数名称查询到,比如:https://codex.wordpress.org/Function_Reference/add_option */

/**本文出现的所有挂钩详情及扩展都可以在https://codex.wordpress.org/Plugin_API/Action_Reference/ 链接末尾缀上挂钩名称查询到,比如:https://codex.wordpress.org/Plugin_API/Action_Reference/admin_menu */


//这是添加字段的函数:需要保存的数据是新的、与用户、文章、页面都独立的,因此我们把它添加到wp_options表中。
function add_wanglong() {
//add_option有两个参数:($字段,$初始值),执行时,若数据表中已有wanglong字段,则不再添加,因此不需要判断是否已存在。
add_option('wanglong','wanglong');
}
//把add_wanglong的函数挂到一个叫做plugins_loaded的挂钩上,表示插件启用时执行函数。
add_action( 'plugins_loaded', 'add_wanglong' );

//这是读取字段值的函数:从wp_options表中读取,然后用echo打印出来。
function my_admin_notice() {

$class = "wanglong";

$message = get_option('wanglong');

echo"<div class=\"$class\"> <p>hello,$message</p></div>";
}

//把my_admin_notice函数挂到一个叫做admin_notices的挂钩上,这样上面打印的内容会在系统管理员通知栏的位置显示。。
add_action( 'admin_notices', 'my_admin_notice' );

//给显示出来的消息添加样式
function wanglong_css() {
//is_rtl()函数用来判断当前语言环境的字符流向
$x = is_rtl() ? 'left' : 'right';

echo "
<style type='text/css'>
.wanglong{
float: $x;
padding:0 15px;
margin: 5px;
font-size: 11px;
background:#000;
border-radius:10px;
color:#ff0;
}
</style>
";
}

//到这里就会感到有些熟悉了:写一个函数,然后立即挂到合适的挂钩上。
add_action( 'admin_head', 'wanglong_css' );

/**---------------------以上是显示-----接下来实现插件设置--------------**/

//这是添加插件设置按钮(链接/菜单)的函数,将设置按钮添加到“设置”中。
function my_plugin_menu() {
//add_options_page()指定了菜单要添加到的位置:settings menu,重要的参数有:$页面title,$插件title,$位置,$控制打开页面后显示内容的函数名。
add_options_page( 'My Plugin Options', '你好,插件!', 'manage_options', 'my-unique-identifier', 'my_plugin_options' );
}

//把my_plugin_menu函数挂到一个叫做admin_menu的挂钩上。
add_action( 'admin_menu', 'my_plugin_menu' );

//这是编辑插件菜单链接被打开时的界面的函数。
function my_plugin_options() {

//判断当前用户是否有权限,更多权限判断名称可参考:https://codex.wordpress.org/Roles_and_Capabilities
if ( !current_user_can( 'manage_options' ) ) {
wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
}

//定义字段名。
$opt_name = 'wanglong';
//通过字段名从数据库中获取该字段的值。
$opt_value = get_option($opt_name);
//如果submit按钮被点击了(发送了post请求)...更多条件标签可参考https://codex.wordpress.org/Conditional_Tags
if (isset($_POST[ $opt_name])) {
//获取表单里opt_name的值
$opt_value = $_POST[$opt_name];
//更新wp_options数据表中字段名为wanglong的值
update_option($opt_name, $opt_value);

?>
<!--更新成功后显示消息~~-->
<div class="updated"><p><strong><?php _e('settings saved.', 'menu-test' ); ?></strong></p></div>

<?php
}

//接下来,要开始写编辑内容的form了~~
echo '<div class="wrap">';

//页面标题~~
echo "<h2>" . __( 'hello,插件》编辑', 'menu-test' ) . "</h2>";

//form主体~~
?>
<form name="form1" method="post" action="">

<!--input的name=字段名称,隐藏-->
<input type="hidden" name="<?php echo $opt_name; ?>" value="">

<p>
<?php _e("请输入您想问候的人名: ", 'menu-test' ); ?>
<!--输入框,value是当前数据库中取到的wanglong字段的值-->
<input type="text" name="<?php echo $opt_name; ?>" value="<?php echo $opt_value; ?>" size="20">
</p>

<hr />

<p class="submit">
<!--提交按钮,esc_attr_e的用法参考https://codex.wordpress.org/Function_Reference/esc_attr_e -->
<input type="submit" name="Submit" class="button-primary" value="<?php esc_attr_e('Save Changes') ?>" />
</p>

</form>
</div>
<?php } ?>

插件设置页运行效果图:
wordpress编写一个简单的插件 - 兔子 - 广莫之野,无何有之乡。

初次编写插件,感谢L的积极帮助~~其实我最大的收获是:遇到什么问题时,不要随便百度...官方文档真的很给力...
文中若有不对的地方,欢迎指正~~


--茕茕白兔--
  评论这张
 
阅读(195)| 评论(4)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017