首页    >    中文手册    >   升级插件和主题到2.7

升级插件和主题到2.7

引言

WordPress重大版本发布后,或许你会发现你的主题和插件都已不能正常运行,它们由于失去赖以存在的基础可能彻底遭到损坏,但或许你稍作升级或修改后,它们又可正常运作了。

这篇文章是升级插件和主题系列文章之一。它涵盖了2.6和2.7版本的差别,而你所要做的正是使插件和主题能够在2.7上运行。

如果你使用的主题和插件是他人开发的,可通过以下途径获取信息:

对于主题或插件开发者,如果你已修改或定制自己的主题,这篇文章会帮助你把主题和插件升级到2.7。如果你的主题或插件已被许多人使用,升级后,你还可把它添加到以上的兼容列表中以供用户继续使用。

 

修改主题或插件

WordPress的以下更改可能会影响你的主题或插件: 

 

主题

 

新增评论显示功能 – 线程化,分页等

WordPress 2.7版本的评论已新增许多内置功能,如线程化,嵌套,分页等,且系统默认你使用的主题会支持这些新功能。如果你的主题不支持这些功能,请查看新增评论显示。 

 

日志等级

WordPress 2.7还新增了日志等级这一函数,它使主题作者设计更加方便简单。这个函数就是post_class()。

若在主题中使用这个函数,只要把它添加到主循环中的恰当位置就可以了。许多主题都会使用DIV标签压缩日志,这些DIV标签就包含了class="post"函数或其它类似函数。可直接调用post_class ,如:

<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

post_class()会为div输出class="whatever" 。它包括几个不同的属性值类别:post, hentry (hAtom microformat页面), category-X (X是日志类别的缩略名), 和tag-X (X是日志标签的缩略名)。 它也为置顶日志新增了置顶属性值。这使主题开发者可以更容易地给主题的不同部分进行设计。

也可使用post_class 添加自己的等级:

<?php post_class('special'); ?>

这会把 "special" 添加到等级列表中。你可以把其与其它等级分开,也可把设成字符串数组,其中每个数组包含一个等级,这更适用于复杂的代码。

若要在主循环之外显示日志,可使用post_class函数的第二个参数——日志ID。这样日志的等级就会根据日志而定。

<?php post_class('',$post_id); ?>

 

登出网站

2.7新增了模板标签wp_logout_url ,它为登出博客提供随机URL。如果主题使用了诸如 /wp-login.php?action=logout这样的登出链接,代码将被更新为wp_logout_url。WordPress的默认和经典主题comments.php and comments-popup.php模板就是这个标签的最好应用。

如果主题的登出URL没有使用wp_logout_url,系统将显示You are attempting to log out of example.com. Please try again。(你在尝试登出example.com,请再试一次。)

 

排除置顶日志

2.7版本可设置置顶日志。如果使用日志查询循环,系统也会显示置顶日志。但是,如果不想包括置顶日志,可直接调用caller_get_posts=1到查询字串。

 

显示置顶日志等级

Find:

<div class="post" id="post-<?php the_ID(); ?>">

an add "<?php sticky_class(); ?>" as so:

<div class="post<?php sticky_class(); ?>" id="post-<?php the_ID(); ?>">

如上所述,如果使用post_class()函数就不用这么麻烦了。最好使用post_class()函数,但如果不得不手动输入,系统就会显示日志置顶状态。

 

使用特定的标题栏,页脚,侧边栏模板

已修改的模板层次可设置特定的标题栏,页脚和侧边栏了。如果指定了名称,标题栏(或页脚)也会应用这个名称。和以前版本一样,如果主题没有header.php (或 footer.php)文件,系统会自动使用默认主题的标题栏(或页脚)。

  • get_header('myheader') 会包括 header-myheader.php
  • get_footer('myfooter') 会包括 footer-myfooter.php
  • get_sidebar('mysidebar') 会包括 sidebar-mysidebar.php

 

模板标签的搜索表单

WordPress 2.7新增了搜索表格模板标签 tag get_search_form()。 为了和以往主题兼容,这个标签会首先查看主题文件夹是否存在searchform.php 文件。如果存在,它会使用这个文件,如果没有,它就会生成HTML文件。

这个标签也可和get_search_form 过滤器一起过滤,这样插件或主题作者就可更改搜索表单的结构。

 

插件

 

卸载插件API

WordPress 2.7新增了插件卸载工具,删除插件时,它会自动卸载插件。卸载插件有两种方法。

最简单的方法是在插件基本目录中创建名为uninstall.php的文件,并把卸载代码存储其中。用户选择”删除”插件时,这些文件就会自动执行。从理论上来说,只有在其中添加代码就可以删除插件创建的选项或数据库信息。由于这个文件是在WordPress下创建的,因此在此可以访问到所有的WordPress函数。

另一种方法是创建一个用于执行卸载的行为钩子,并使用register_uninstall_hook()函数将这个钩子注册进WordPress。但这种方法比较复杂,更适合插件开发高手使用。

 

新增和已删除的管理钩子

2.7的管理面板焕然一新,其中,许多插件钩子(行为和过滤器)也有所变动。请看以下列表(可能并不全面):

//TODO

 

设置页面新增项

WordPress 2.7新增了API以在管理或设置面板添加其它选项。这意味着用户在管理面板就可直接添加新的选项,而不用另外创建一个页面。函数add_settings_section(), add_settings_field(), register_setting(), unregister_setting()将执行这一功能,它们位于 wp-admin/includes/plugin.php (也可查看注册选项下面的区域)。

 

管理标题栏

由于管理页面中用于添加新选项的标题栏在2.7已被取消,因此侧边栏菜单行为("sidemenu" action)也已被删除。

可使用'favorite_actions' 过滤器来设置新的 "收藏夹"菜单 (查看wp-admin/includes/template.php中靠近底部的函数 favorite_actions()  以了解如何使用)。

 

插件列表页面

在插件页面添加新条目可使用两个过滤器:

  • plugin_action_links_{$plugin} 过滤器 — 可给插件的行为栏添加新行为,如:
$plugin = plugin_basename(__FILE__); 
add_filter("plugin_action_links_$plugin", 'my_plugin_actlinks' ); 
function my_plugin_actlinks( $links ) { 
 // Add a link to this plugin's settings page
 $settings_link = '<a href="whatevertheurlis">Settings</a>'; 
 array_unshift( $links, $settings_link ); 
 return $links; 
}
  • after_plugin_row_{$plugin_file} 过滤器 – 可在插件信息末尾添加其它信息,但这只适用于你的插件,因此它只会运行一次。

 

注册插件选项

如果插件使用了“简易”方法保存选项(详细信息请查看创建选项页面),那么在WordPress以后的版本中(和当前的WordPress MU版本中),为了使其有效,这些选项还需要重新注册。

在WordPress中,函数register_setting()和unregister_setting()用来执行这一操作;而add_option_update_handler() 和 remove_option_update_handler()则是当前WordPressMU中的包装函数(新别名也将很快应用到 WPMU中)。

虽然目前的2.7并不要求必须使用这些函数,但以后的版本中,所有使用options.php处理日志来进行选项升级的插件都要使用这些函数。因此,为了能和以后的版本兼容,现在就可以修改插件以使其能使用这个函数啦!

这些函数有以下几个功能:

  • 设置优良名单(Whitelist)选项
  • 注册校订回调
  • 在WPMU中,它们能阻止管理员(即在WPMU下允许所有人创建博客的用户,但未必可信任)修改隐私选项如rewrite_rules 或active_plugins。

使用:(更多信息请阅读wp-admin/includes/plugin.php

  • 为选项创建一个群组名,如'some-options'
  • 在admin_init 行为中为要更新的选项输入以下内容:
register_setting('some-options', 'option-1', 'intval');
  • 在选项更新表中输入:
settings_fields('some-options');

options.php会检查settings_fields()输出的所有隐藏域,包括随机数(nonce)。如果使用新的API,就不需要配置page_options隐藏域了。

如果使用了check_admin_referer() 函数来保护表格,就需要更改它的参数。如果使用settings_fields('some-options')输出随机数(nonce),可使用以下参数:

check_admin_referer('some-options-options');

接下来WordPress会检查随机数(nonce)是否正确。

注意末尾带有'-options'!

分类:中文手册

* 版权声明:作者WordPress啦! 转载请注明出处。

kadıköy escortbostancı escortataşehir escortbostancı escortmaltepe escortmaltepe escortanadolu yakası escortanadolu yakası escortataşehir escortbostancı escortistanbul escortkartal escortbostancı escortkartal escortkadıköy escortpendik escortpendik escortmaltepe escortataşehir escortmaltepe escortmaltepe escortanadolu yakası escortkadıköy escortataşehir escortkadıköy escortataşehir escortümraniye escortataşehir escortkartal escortescort bayankartal escortpendik escortkartal escortgöztepe escorttuzla escortkadıköy escortkartal escortkadıköy escortmaltepe escortkartal escortataşehir escortmaltepe escortbostancı escortkartal escortpendik escortkadıköy escortataköy escortavrupa yakası escortataköy escortbakırköy escortbeylikdüzü escorttaksim escorthalkalı escortetiler escortbodrum escortmalatya escortankara escortantalya escortmersin escortantalya escortHacklinkHacklinkshellwso shellwso shellgörüntülü sohbettipobetbahis siteleri