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

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

「プラグインとテーマの移行」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(カノニカルURL が全く分からないので英文併記に/追加情報)
(2.3 から 2.5 への移行: taiさんの和訳へリンク/2008年2月28日 (木) 21:33 Azaozz 版に更新)
63行目: 63行目:
 
== 2.3 から 2.5 への移行 ==
 
== 2.3 から 2.5 への移行 ==
 
</div>
 
</div>
 +
 +
'''taiさんによる和訳: [http://wp.tekapo.com/2008/03/09/migrating-from-23-to-25/ わーどぷれすっ! » プラグインとテーマの 2.3 から 2.5 への移行]'''
 +
 
(注: WordPress バージョン 2.4 はありません。とばして 2.5 となります。)
 
(注: WordPress バージョン 2.4 はありません。とばして 2.5 となります。)
  
テーマについては、[[Version 2.5|バージョン 2.5]] による重大な影響はないでしょう。
+
テーマについては、[[Version 2.5|バージョン 2.5]] による重大な影響はないでしょう。プラグインは、いくつかの変更による影響を受けるかもしれません。
  
もうすぐ公開される [[Version 2.5|WordPress バージョン 2.5]] における、プラグインに影響する主な変更点は、WordPress の管理画面とメニューの全面的な見直しです。この変更は、WordPress の管理パネルに対して、メニューへのページ追加や、ある画面内にセクションを追加するようなプラグインに影響します。
+
この変更は、WordPress の管理パネルに対して、メニューへのページ追加や、ある画面内にセクションを追加するようなプラグインに影響します。
  
First, menus: The menus have been reorganized slightly; most plugins will probably still function correctly, if they used the standard methods of [[:en:Adding Administration Menus|Adding Administration Menus]].
+
<div id="Admin_Menu_Changes">
 +
=== 管理メニューの変更 ===
 +
</div>
  
Second, screens: 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. 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 formatting functions have been defined. For example:
+
The main change affecting plugins in the (at time of writing) upcoming WordPress version 2.5 is the complete overhaul of the administration screens and menus of WordPress. The menus have been reorganized slightly; most plugins will probably still function correctly, if they used the standard methods of [[Adding Administration Menus]], but some may need to adjust.
 +
もうすぐ公開される WordPress バージョン 2.5 における、プラグインに影響する主な変更点は、WordPress の[[管理パネル|管理画面]]とメニューの全面的な見直しです。メニューは多少再編成されます。標準的な[[:en:Adding Administration Menus|管理メニューの追加]]方法を用いていれば、たいていのプラグインは引き続き正しく動作すると思われますが、場合によっては調整の必要があるかもしれません。
 +
 
 +
<div id="Admin_Screens">
 +
=== 管理画面 ===
 +
</div>
 +
 
 +
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 [[プラグイン API|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 <tt>add_meta_box</tt> 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 <tt>wp-admin/includes/template.php</tt>).
 +
 
 +
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 <tt>add_meta_box</tt> has been defined. For example:
 
<pre>
 
<pre>
 
if (function_exists('add_meta_box')) {
 
if (function_exists('add_meta_box')) {
  // 2.5 style
+
  // 2.5 logic, calling add_meta_box to define the screen
 
} else {
 
} else {
  // 2.3
+
  // 2.3 logic, calling add_action( 'dbx_post_advanced' ) or similar
 
}  
 
}  
 
</pre>
 
</pre>
 +
 +
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:
 
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:
91行目: 109行目:
 
}
 
}
 
</pre>
 
</pre>
 +
 +
===TinyMCE===
 +
 +
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:
 +
http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/devkit
 +
http://wiki.moxiecode.com/index.php/TinyMCE:API
 +
 +
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.
 +
 +
参照:
 +
 +
* [[:en:Plugin_API/Action_Reference|プラグイン API/アクション・リファレンス]]
 +
* [[:en:Plugin_API/Filter_Reference|プラグイン API/フィルター・リファレンス]]
 +
* [[:en:Plugin_API/Hooks_2.0.x|プラグイン API/フック 2.0.x]]
 +
  
 
=== 外部情報 ===
 
=== 外部情報 ===

2008年3月9日 (日) 23:47時点における版

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 となります。)

テーマについては、バージョン 2.5 による重大な影響はないでしょう。プラグインは、いくつかの変更による影響を受けるかもしれません。

この変更は、WordPress の管理パネルに対して、メニューへのページ追加や、ある画面内にセクションを追加するようなプラグインに影響します。

管理メニューの変更

The main change affecting plugins in the (at time of writing) upcoming WordPress version 2.5 is the complete overhaul of the administration screens and menus of WordPress. The menus have been reorganized slightly; most plugins will probably still function correctly, if they used the standard methods of Adding Administration Menus, but some may need to adjust. もうすぐ公開される 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
}

TinyMCE

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: http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/devkit http://wiki.moxiecode.com/index.php/TinyMCE:API

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.

参照:


外部情報

最新英語版: WordPress Codex » Migrating Plugins and Themes