• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

プラグインとテーマの移行

提供: WordPress Codex 日本語版
移動先: 案内検索

このページ「プラグインとテーマの移行」は未翻訳です。和訳や日本語情報を加筆してくださる協力者を求めています

WordPress 2.1 から 2.2 へ、といった、あるバージョンから別のメジャーバージョンへアップグレードするとき、そのままでは使えないテーマやプラグインがあるかもしれません。メジャーアップグレードでは WordPress に抜本的な変更がなされることがあるため、プラグインやテーマが全く動作しない可能性もありますが、設定の更新やほんの少しの修正によって、使えるようにできるかもしれません。

このページは、プラグインやテーマを WordPress のメジャーアップグレードに対応させる方法の手引きです。

他の誰かが開発したテーマやプラグインを使っているのなら、次のページに最新情報が載っています。

あなたがテーマ・プラグインの作者であるか自分で変更・カスタマイズしている場合は、以下をお読みください。テーマ・プラグインを一般に配布しているのでしたら、動作するようになったら、新バージョンで使えることや動作するバージョンをユーザが確認できるよう、上記互換性リストに追加するといいでしょう。

1.2 から 1.5 への移行

1.2 から 1.5 へのアップグレード をご覧ください。古いテーマから現在のテーマシステムへの変換方法などを説明しています。

2.0.x から 2.1 への移行

プラグインとテーマの 2.1 への移行 をご覧ください。

2.1 から 2.2 への移行

バージョン 2.2 におけるプラグインとテーマにとっての主要な変更点は、WordPress ウィジェットが WordPress のコア(本体)に組み込まれたことです。(ウィジェットとは、カテゴリリストやアーカイブリスト・検索フォームといった WordPress の出力要素を、簡単にブログのサイドバーに配置できるようにするものです。従来はプラグインとして提供されていました。)

WordPress 2.2 より前に開発されたテーマでウィジェットを使えるようにするには、テーマのウィジェット対応についてのこの記事でテーマの修正方法をご覧ください。

プラグインでサイドバーウィジェットへの表示を生成する方法は、プラグインのウィジェット対応のこの記事をご覧ください。Widgets API も役立ちます。

2.2 から 2.3 への移行

カテゴリとタグ

バージョン 2.3 におけるプラグインとテーマにとっての主要な変更点は、WordPress 本体の機能としてタグ付けが組み込まれたことです。

テーマにタグを追加(例:記事に付けられているタグの表示、サイドバーへのタグクラウドの表示)するには、新しいテンプレートタグ the_tagswp_tag_cloud を用います。

WordPress 2.3 では、プラグインの中で使えるタグ関連の新しい関数も数多く導入されました。

また、WordPress にタグを導入する副作用として、カテゴリ情報の格納に関して、基盤であるデータベース・テーブル構造が大幅に変更されました。したがって、WordPress データベースのカテゴリ関係のテーブルを使うクエリを実行するプラグインは、おそらく使えなくなってしまい、クエリを全面的に書き換えなければなりません。カテゴリへのアクセスに WordPress 関数を利用しているプラグイン・テーマであれば、大丈夫なはずです。

カノニカル URL

(この項、さっぱり分からないので英文併記)

Another change in 2.3 that affects some plugins is the introduction of "canonical" URLs. The canonical URL system basically rewrites all URLs used in WordPress into "canonical" form, so that there is only one URL that points to a given display, and other URLs that could also point to that display are redirected to the "canonical" URL. Most plugins will not be affected by this change, but a plugin that adds suffixes to URLs could find that some of the URLs it generates are broken. Notably, a URL with a page number in it, such as example.com/page/2/ (to access the second page of older posts) must have the page section at the end of the URL. Prior versions of WordPress would have allowed example.com/page/2/suffix/ to work, but in WordPress 2.3, the URL must be generated as example.com/suffix/page/2 in order to function correctly.
プラグインに影響する 2.3 のもう一つの変更点は、「canonical(カノニカル)」URL の導入です。カノニカル URL システムは、与えられた表示(ページ)を指し示す URL を一つだけとするために、WordPress で使われる全ての URL を原則として「カノニカル」形式に書き換え、その表示を指す他の URL は「カノニカル」URL へリダイレクトします。ほとんどのプラグインはこの変更による影響を受けませんが、a plugin that adds suffixes to URLs could find that some of the URLs it generates are broken.(~~~ URL に接尾辞(suffix)を加えるようなプラグインは使えなくなります。) 特に、example.com/page/2/(過去記事の2ページ目にアクセス)のようにページ番号が付く URL は、URL の末尾にページセクションが必須です。WordPress の従来のバージョンでは example.com/page/2/suffix/ は動作できましたが、WordPress 2.3 では、正しく機能させるために URL を example.com/suffix/page/2 と生成しなければなりません。

留意: あなたのサイトを機能させるために、一般的でない URL/パーマリンク構造を使う必要がある場合は、「カノニカル URL」機能をオフにできます。プラグインファイル または テーマディレクトリ内の function.php に次の 1行を加えてください。

remove_filter('template_redirect', 'redirect_canonical');

WordPress 2.5 will make a further filter available for choosing which canonical redirects are denied rather than forcing them to be all on or all off.
WordPress 2.5 では、強制的なオン/オフではなく、カノニカルリダイレクトの拒否を選べる追加フィルタが提供される予定です。

2.3 から 2.5 への移行

taiさんによる和訳: わーどぷれすっ! » プラグインとテーマの 2.3 から 2.5 への移行

(注: WordPress バージョン 2.4 はありません。とばして 2.5 となります。)

There is one major new functionality addition in Version 2.5 for Themes (Avatars), and several changes that affect plugins (the rest of the sections below).

アバター

WordPress 2.5 has built-in support for "avatars", which are small icons for people who comment on your blog, retrieved from a web service. The default service is Gravatar; plugins can override this.

If avatar functionality is enabled in the administrative menus, the avatar can be displayed by the theme next to each comment. Theme authors can add lines like this inside the comment loop of the comments.php file, to support this new functionality (see the Default and Classic themes in WordPress 2.5 for examples):

<?php if(function_exists('get_avatar')){
  echo get_avatar($comment, '50');
} ?> 

The first input to the get_avatar function can be the comment author's email address, the author's WordPress user ID, or a complete comment data structure. The second argument is the size of avatar to display, up to 80 pixels. There is also an optional third argument giving the default avatar image file to display if the comment author doesn't have one.

管理メニューの変更

WordPress バージョン 2.5 における、プラグインに影響する主な変更点は、WordPress の管理画面とメニューの全面的な見直しです。メニューは多少再編成されます。標準的な管理メニューの追加方法を用いていれば、たいていのプラグインは引き続き正しく動作すると思われますが、場合によっては調整の必要があるかもしれません。

管理画面

Any plugin that had added a section to the post editing screen, or other administration screen, will probably find that the formatting and markup changes on the administration screens in WordPress 2.5 have made their section so that it no longer "blends in" and looks like it belongs with the built-in WordPress sections on the screen. Also, some of the hooks that plugins would have used in versions 2.3 and earlier to add information to various screens have been removed, in favor of a new API which uses the function add_meta_box to define a section that can be added to the post, page, or link editing screen. (Until this function has its own documentation page, you can find it, and its documentation header, in wp-admin/includes/template.php).

So, plugin authors will either need to release a new version of their plugins for WordPress 2.5, or (preferably) put some decision logic into their plugin that will detect the version and use the right formatting. A good way to do that is to detect whether the new function add_meta_box has been defined. For example:

if (function_exists('add_meta_box')) {
 // 2.5 logic, calling add_meta_box to define the screen
} else {
 // 2.3 logic, calling add_action( 'dbx_post_advanced' ) or similar
} 

Note: Be sure to run the function_exists test late in the WordPress initialization process! That function is not loaded at the time of plugin initialization. So it is suggested that you do this inside of an 'admin_menu' action, or the new 'admin_init' action.

Activation Global Scope

Another change that might affect some plugins is that in WordPress 2.5, the Activation hooks for plugins are run in non-global scope within a function (they used to be run in the global scope). This means that if your plugin has an activation hook, and the function it calls relies on global variables that are defined within your plugin file, you may find that they are not working properly. All you need to do is, at the global scope level in your plugin, add a "global" declaration for those variables, and you should be OK. For instance:

global $my_plugin_variable;
$my_plugin_variable = 3;

function my_plugin_activation_function() {
   global $my_plugin_variable;

   // rest of activation function
}

Hook Changed: restrict_manage_posts

The behavior of the restrict_manage_posts hook was changed between WordPress 2.3 and WordPress 2.5. See the March 2008 comments and attachments on http://trac.wordpress.org/ticket/6196 for an explanation of the change, and sample plugins for 2.3 and 2.5 illustrating the change.

TinyMCE version 3 へのアップグレード

The upcoming WordPress version 2.5 includes TinyMCE 3 which is a complete rewrite of the editor. There are many changes in the API and all WordPress plugins that add button(s) to it have to be updated. Good places to start are:

Of course adding a button that will insert some code at the cursor location is still quite easy. The "pagebreak" plugin can be used as an example.

For loading the plugins there is a new filter $mce_external_plugins that takes an array 'name' => 'url' and inserts it in the zipped TinyMCE. It's best to use absolute url (with or without the host name), as using relative needs some settings in the init array to stay at the default values (that can be changed by a WordPress plugin), so it would be possible to break the loading of external plugins that use relative url. TinyMCE would still not load a plugin from another domain.

The gzip compressor has changed too. Now it gathers all parts of TinyMCE and outputs the zipped file all in one step. The action "mce_options" is still supported, but deprecated. The action "tinymce_before_init" is replaced by a filter "tiny_mce_before_init" that is applied to the array with all settings for TinyMCE. Also the zipped file is cached on disk to save some memory/server resources. This cache is invalidated by any change to the init array or by changing the ver=[number] arg when calling tiny_mce_config. The version is filtered by "tiny_mce_version" defined in /wp-includes/script-loader.php, so a plugin can change it.

There are changes in loading language files too. The language codes are only ISO 639-1, which is just the first 2 letters from WordPress locale, like de, fr, es, etc. TinyMCE will load langs/[lang].js when a plugin is loaded and if the plugin has a popup, it will load langs/[lang]_dlg.js when the popup is opened.

The loading of the default language strings is different too. Now they all are defined in tinymce/langs/wp-langs.php, so they can be included in the main .pot file and translated to all languages available in WordPress. A plugin can use any of the strings there, check the tinyMCE.i18n js object when TinyMCE is loaded, to see how to reference them.

データベースの変更

データベース・スキーマがバージョン 2.3 と 2.5 とで変わります。

  • テーブル: comments
    • 変更 comment_approved enum → varchar(20) NOT NULL default '1'
    • KEY 追加 comment_approved_date_gmt (comment_approved,comment_date_gmt)
    • KEY 追加 comment_date_gmt (comment_date_gmt)
  • テーブル: posts
    • 変更 post_status enum → varchar(20) NOT NULL default 'publish'
    • 変更 comment_status enum → varchar(20) NOT NULL default 'open'
    • 変更 ping_status enum → varchar(20) NOT NULL default 'open'

外部情報

2.5 から 2.6 への移行

2.6 から 2.7 への移行

最新英語版: WordPress Codex » Migrating Plugins and Themes最新版との差分