WordPress插件开发实例教程-版权插件
说明:本教程仅限学习,⾼⼿请绕道
开发程序:WordPress 3.9-RC1
使⽤主题:Twenty Fourteen
在开始之前,需要注意三件事情
I、给插件取⼀个个性化的名字,越个性化越好,以防和其他插件重名冲突。
II、代码⾥⾯,⼀定要包含注释,不为⾃⼰,也要为想修改你代码的别⼈想想。
III、尽量⽤最新版的 WordPress 进⾏开发和测试。
插件名称和插件结构
⼀般来说,都是在 wp-content\plugins ⽬录下建⽴⼀个⽂件夹,⽂件夹名就是插件的名称,我们插件名字为"copyright_plugin",⽂件结构如下。
\wp-content\plugins\copyright_plugin下有copyright_plugin.php和
这⾥的 ⽂件中包含了⼀些插件的介绍,使⽤说明等信息,主要是提交到 WordPress 官⽅⽹站时候⽤到的,可以参考他们给的模板 /extend/plugins/,另外还有插件截图预览的功能,需要另外添加图⽚,但是我们现在是练习,不需要提交到官⽹,所以暂时先不涉及这些。
插件的核⼼
总的来说,插件的核⼼是两个 function,⽤来添加 Hooks(中⽂译为钩⼦)
add_action ($hookname, $callbackfunction)
add_filter ($hookname,$callbackfunction)
这两个⽅法相当重要,⼏乎所有的插件都要⽤到他们。
Actions,我理解就是 wordpress 核⼼代码预留的⼀些特殊的切⼊点,或者说是在执⾏⼀些特定事件时候发⽣,例如⽂章发布时,或者访客留⾔时触发。
Filters,应该就是 wordpress 执⾏时,对数据传输过程的⼀种过滤机制,例如当⽂章保存到数据库的过程,或者⽂章从事数据库中取出,展现到浏览器中的这个过程。
我们今天要制作的插件,应该是⽤ Filters,因为我们要在⽂章显⽰在浏览器之前,在最后⾯加上⼀段字符窜,⽤来显⽰版权信息,后⾯添加菜单项的时候,也要⽤到 Actions。
插件概要信息
⽤⽂本编辑器打开 copyright-plugin.php ⽂件,输⼊如下信息:
<?php
/*
Plugin Name: Copyright plugin
Plugin URI: /plugins/
Description: 此插件将在⽂章正⽂最下⾯,显⽰⼀⾏版权信息
Version: 1.0.0
Author: xcxc
Author URI: /
License: GPL
*/
>
保存好⽂件,然后登录 WordPress 后台,打开插件菜单,应该就可以看到这个插件,已经显⽰在插件列表⾥⾯了,并且可以启⽤这个插件试试,不过没有任何效果,因为到⽬前为⽌,这个插件还没有实现任何功能。
为插件实现功能
修改copyright_plugin.php
<?php
/*
Plugin Name: Copyright plugin
Plugin URI: /plugins/
Description: 此插件将在⽂章正⽂最下⾯,显⽰⼀⾏版权信息
Version: 1.0.0
Author: xcxc
Author URI: /
License: GPL
*/
/* 此插件将在⽂章正⽂最下⾯,显⽰⼀⾏版权信息 */
function display_copyright() {
return "<p style='color:red'>本站点所有⽂章均为原创,转载请注明出处!</p>";
}
>
保存好这个⽂件,然后打开正在⽤的主题⽂件夹,打开index.php ⽂件夹,到 get_template_part( 'content', get_post_format() ); 并在下⾯添加如下代码
if(function_exists('display_copyright')) {
echo display_copyright();
}
function_exists 是判断 display_copyright 函数是否存在,因为当插件停⽤的时候,主题代码⾥⾯是不到这个函数的,所以要判断⼀下,防⽌出错。
然后在 wordpress 后台启⽤该插件,再打开⾸页看看效果吧!
⾄此,这段代码,应该可以勉强算是⼀个插件了。之所以说勉强,是因为这个插件存在⼀个问题,需要⼿⼯去修改主题代码,如果⽤户换了主题的话,需要在新主题⾥⾯再次修改代码,这个不好。
改良插件
还记得我们前⾯说过的 Hooks (钩⼦)吗,我们要开始⽤ Filter 钩⼦了!
代码修改copyright_plugin.php如下:
<?php
/*
Plugin Name: Copyright plugin
Plugin URI: /plugins/
Description: 此插件将在⽂章正⽂最下⾯,显⽰⼀⾏版权信息
Version: 1.0.0
Author: xcxc
Author URI: /
License: GPL
*/
add_filter( 'the_content',  'display_copyright' );
/* 这个函数在⽇志正⽂结尾处添加⼀段版权信息,并且只在⾸页页⾯才添加 */
function display_copyright( $content ) {
if( is_home() )
$content = $content . "<p style='color:red'>本站点所有⽂章均为原创,转载请指明出处!</p>";
return$content;
}
>
参看以上代码,其中 the_content 是钩⼦的名字,display_copyright 是回调函数名称。这样⼀来,只要启⽤插件就可以实现功能,⽆需去修改主题了,请把刚才在index.php ⽂件中添加的代码删掉,然后启⽤插件,看看效果吧,显⽰效果应该是⼀样的,⽆论怎么换主题,还是会⾃动显⽰版权信息。
is_home是判断是不是主页
更进⼀步
⾄此⼀个真正的插件算是完成了。但是此插件将版权信息直接写在代码⾥,如果⽤户想⾃定义版权信息的话,需要修改插件的源代码,仍然不⽅便,所以此插件仍需改进。其实,我们可以在 WordPress 后台中为插件单独添加⼀个菜单和页⾯,⽤户可以在这⾥来⾃定义设置设置版权信息,信息可以保存在数据库⾥⾯。
先附上完整代码,后⾯会做说明
<?php
/*
Plugin Name: Copyright plugin
Plugin URI: /plugins/
Description: 此插件将在⽂章正⽂最下⾯,显⽰⼀⾏版权信息
Version: 1.0.0
Author: xcxc
Author URI: /
License: GPL
*/
/* 注册激活插件时要调⽤的函数 */
register_activation_hook( __FILE__, 'display_copyright_install');
/* 注册停⽤插件时要调⽤的函数 */
register_deactivation_hook( __FILE__, 'display_copyright_remove' );
function display_copyright_install() {
/* 在数据库的 wp_options 表中添加⼀条记录,第⼆个参数为默认值 */
add_option("display_copyright_text", "<p style='color:red'>本站点所有⽂章均为原创,转载请注明出处!</p>", '', 'yes');  }wordpress主题怎么安装
function display_copyright_remove() {
/* 删除 wp_options 表中的对应记录 */
delete_option('display_copyright_text');
}
if( is_admin() ) {
/*  利⽤ admin_menu 钩⼦,添加菜单 */
add_action('admin_menu', 'display_copyright_menu');
}
function display_copyright_menu() {
/* add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function);  */
/* 页名称,菜单名称,访问级别,菜单别名,点击该菜单时的回调函数(⽤以显⽰设置页⾯) */
add_options_page('Set Copyright', 'Copyright Menu', 'administrator','display_copyright', 'display_copyright_html_page'); }
function display_copyright_html_page() {
>
<div>
<h2>Set Copyright</h2>
<form method="post" action="options.php">
<?php /* 下⾯这⾏代码⽤来保存表单中内容到数据库 */ ?>
<?php wp_nonce_field('update-options'); ?>
<p>
<textarea
name="display_copyright_text"
id="display_copyright_text"
cols="40"
rows="6"><?php echo get_option('display_copyright_text'); ?></textarea>
</p>
<p>
<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="display_copyright_text" />
<input type="submit" value="Save" class="button-primary" />
</p>
</form>
</div>
<?php
}
add_filter( 'the_content',  'display_copyright' );
/* 这个函数在⽇志正⽂结尾处添加⼀段版权信息,并且只在⾸页页⾯才添加 */
function display_copyright( $content ) {
if( is_home() )
$content = $content . get_option('display_copyright_text');
return$content;
}
>
说明:
以下代码⾃⼰要是在启⽤插件时和停⽤插件时调⽤,注释中已经写得很详细了。
/* 注册激活插件时要调⽤的函数 */
register_activation_hook( __FILE__, 'display_copyright_install');
/* 注册停⽤插件时要调⽤的函数 */
register_deactivation_hook( __FILE__, 'display_copyright_remove' );
function display_copyright_install() {
/* 在数据库的 wp_options 表中添加⼀条记录,第⼆个参数为默认值 */
add_option("display_copyright_text", "<p style='color:red'>本站点所有⽂章均为原创,转载请注明出处!</p>", '', 'yes');  }
function display_copyright_remove() {
/* 删除 wp_options 表中的对应记录 */
delete_option('display_copyright_text');
}
添加菜单和页⾯的代码如下:
if( is_admin() ) {
/*  利⽤ admin_menu 钩⼦,添加菜单 */
add_action('admin_menu', 'display_copyright_menu');
}
function display_copyright_menu() {
/* add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function);  */
/* 页名称,菜单名称,访问级别,菜单别名,点击该菜单时的回调函数(⽤以显⽰设置页⾯) */
add_options_page('Set Copyright', 'Copyright Menu', 'administrator','display_copyright', 'display_copyright_html_page');
}
⾄此,已经可以在后台看到菜单项了,但是点击的话,还会出错,因为还没有添加对应的页⾯()
下⾯开始添加页⾯,主要代码如下:
function display_copyright_html_page() {
>
<div>
<h2>Set Copyright</h2>
<form method="post" action="options.php">
<?php /* 下⾯这⾏代码⽤来保存表单中内容到数据库 */ ?>
<?php wp_nonce_field('update-options'); ?>
<p>
<textarea
name="display_copyright_text"
id="display_copyright_text"
cols="40"
rows="6"><?php echo get_option('display_copyright_text'); ?></textarea>
</p>
<p>
<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="display_copyright_text" />
<input type="submit" value="Save" class="button-primary" />
</p>
</form>
</div>
<?php
}
现在再去点击刚才新加的菜单,可以显⽰出来⼀个页⾯了,我们可以在这⾥设置版权信息⽂本。
另外还有如下代码要修改
/* 这个函数在⽇志正⽂结尾处添加⼀段版权信息,并且只在⾸页页⾯才添加 */
function display_copyright( $content ) {
if( is_home() )
$content = $content . get_option('display_copyright_text');
return$content;
}
将原来的静态化⽂本,改成动态的,之所以要这么改,是因为我们已经将数据存到数据库⾥⾯了,这⾥要从数据库⾥⾯取出数据。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。