wordpress开发之插件开发初识

wordpress开发之插件开发初识,第1张

wordpress开发之插件开发初识(wordpress插件开发基础)

本文详细介绍了如何开发设计一个Wordpress软件,一定要朋友们参考。

首先你需要在wp-content/plugins/下创建一个文件夹。文件夹的名称最好只由英文字母、数据、“-”和drop组成。另外,在这个文件夹下创建一个同名的php文件。例如,如果你的文件夹名是my-plugin,php的名字就是my-plugin.php。作为你的插件的主文件,这个文件和主题文件的sytle.css文件一样,在它的头顶部包含了这个软件的叙述性信息。这里有一个简单的例子:


复制代码如下:
<?PHP
/*
插件名称:软件名称
插件URI:http://uri_of_page_descripting_Plugin_and_updates
描述:软件简单描述
版本:软件版本信息举例:1.0
作者:软件创建者
作者URI:http://URI_of_the_Plugin_Author创建者详细地址
*/
?>

此外,如果您想将您的软件提交给wordpress.org,您还应该在文件夹中添加一个readme.txt文件。就像主题中的style.css文件一样。同样,readme.txt的头顶部包含了这个软件的基本叙述信息。readme.txt的文件格式可以参考WordPress的官网示例。由于这里只容易写出一个可用的插件,所以我就不详细介绍reaadme.txt了。
WordPress软件其实就是一堆php的方式。这样根据系统软件内置的钩子,博客就会被提升到一个新的角色。我们来看看系统的钩子是什么。
软件挂钩

Wordpress定义了许多主要用途不同的钩子。在WordPress *** 作的不同链接中,会检查当前链接中是否已经申请注册了hook功能。如果有,会优先实施这种涵洞。通过以下方式添加过滤器:


复制代码编码如下:add_filter('filter_name','filter_callback_function_name',$priority=10,$accepted_args=1);

add_fitler的四个主要参数是:要初始化的钩子的名字,钩子的回调函数,回调函数的优先级,回调函数的主要参数个数。一个例子如下:


复制代码编码如下:
Add_Fitler('the_title','my_title',10,2);
函数my_title($title,$id){
返回消息:$title;
}

在这种情况下,我们在_title的钩子上初始化了my_title的一个函数。这个函数接受两个主要参数,每个参数都是文章内容的标题和ID。当Wordpress要将文章内容发布到电脑浏览器时,会先启用。这里,我们在每篇文章内容的标题上加一个“新闻:”字。
所有Wordpress制作的ticks,请参考Wordpress官网:过滤参考。
另外,你很可能在某些文章中看到带勾的函数add_action。看来,如果你看看wordpress的核心,你可能会明白:


复制代码如下:
函数Add_Action($tag,$function_to_add,$priority=10,$accept_args=1){
ReturnAdd_filter($tag,$function_to_add,)
}

因此,add_action和add_filter实际上没有区别。
之前有人说过,Wordpress会在系统软件的不同部分启用不同的钩子。事实上,如果需要,您可以在代码中手动启用这个挂钩。通过以下方式:


复制代码编码如下:
$return_values=apply_filter('filter_name',$args...);

有了这种过滤器,你就可以在wordpress的求解步骤中随意改变数据信息的内容,完成软件的必要功能。
期权制

光有滤镜是不够的。很多软件还必须存储一些信息,比如软件功能设置。这时候你需要采用Wordpress的选项系统。
WordPress的选项系统是按照add_option、get_get_option、update_option三个函数来完成的。三种功能的定义如下:


复制代码如下:
Add_option($name,$value,$deprecated,$autoload);
get_option($name);
update_option($option_name,$newvalue);

Add_option有四个主要参数,每个参数都有以下作用:
$name:preferred,用户标识符
$value:可选,变量类型,默认设置为空character
$deprecated:不起作用的主要参数,纯碎片化是历史时间的遗留问题。保存它只是为了更好地兼容现有的软件。当然,如果您需要启用下面的$autoload,您需要为它传递一个空字符或null。
$autoload:“是”或“否”。默认设置是“是”。当它被设置为“yes”时,这个特性将在wp_load_alloptions被启用时获得。
get_option用于获取您添加的主参数。此外,一些主要参数已经通过系统软件中的默认设置进行了定义。可以参考Wordpress的官网目录:OptionRefernce。
而update_option用于升级选项。
三种方法都很好理解,我也没怎么讲。根据这三种方式,你可以把你要长期存储的数据放到数据库查询中。
设置网页

有了过滤器和选项,我们已经完成了一个软件的关键工作。但是作为一个软件,它往往要向客户展示一个设置页面,也就是在Wordpress的后端管理软件目录中找到的设置链接,如下图:
设置
这里我们也用一个非常简单的例子来展示如何添加设置页面:


复制代码如下:
<?php类WCtest{
publicfunction__construct(){
if(is_admin()){
add_action('admin_menu',array($this,'add_plugin_page'));
add_action('admin_init',array($this,'page_init');
}
}
publicfunctionadd_plugin_page(){
//此页面将在“设置”
add_options_page('SettingsAdmin','Settings','manage_options','test-setting-admin',array($this,'create_Admin_page');
}
公共函数create_admin_page(){
?>
<;div>
<;?PHPscreen_icon();?>
<;h2>设置</H2>;
<;formmethod="post"action="options.PHP">;
<;?php
//这会打印出所有隐藏的设置字段
settings_fields('test_option_group');
do_settings_sections('test-setting-admin');
?>
<;?php提交_按钮();?>
<;/form>;
<;/div>;
<;?PHP
}
公共函数page_init(){
register_setting('test_option_group','array_key',array($this,'check_ID');
add_settings_section(
'setting_section_id',
'Setting',
array($this,'print_section_info'),
'test-Setting-admin'
);
add_settings_field(
'Some_ID',
'SomeID(Title)',
array($this,'create_an_id_field'),
'test-setting-admin',
'setting_section_ID'
);
}
公共函数check_ID($input){
if(is_numeric($input['some_ID']){
$mid=$input['some_ID'];
if(get_option('test_some_id')===FALSE){
add_option('test_some_id',$mid);
}else{
update_option('test_some_id',$mid);
}
}else{
$mid=";
}
return$mid;
}
publicfunctionprint_section_info(){
print'在下面输入您的设置:';
}
公共函数create_an_id_field(){
?><inputtype="text"id="input_whatever_unique_id_I_want"name="array_key[some_id]"value="<;?=get_option('test_some_id');?/>;"/>;<?PHP
}
}
$WCtest=newWCtest();

上面创建的类将为你的Wordpress后台管理添加一个html页面。此外,它允许客户存储一个id值。

这里,一个简单的Wordpress软件已经完成。虽然这个软件本身没什么大用处。谢谢你。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/772468.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-03
下一篇2022-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存