Home
日本語ホーム
ドキュメント
拡張
Showcase
ブログ
フォーラム
ダウンロード
ドキュメント横断検索
:
赤色のリンク
は、まだ日本語Codex に存在しないページ・画像です。英語版と併せてご覧ください。(
詳細
)
この Wiki はいつでも誰でも編集できます。
ログインアカウントの取得
からどうぞ :)
5月23日に
MySQL 4.0 → 5 へ移行
しました。動作不良等があればご一報ください (
連絡先
)
ソースを表示
出典: WordPress Codex 日本語版
プラグイン API
のソース
移動:
ナビゲーション
,
検索
あなたにはこのページの編集権限がありません。理由は以下の通りです:
この処理は user,
管理者
のうちどちらかの権限を持った利用者のみが実行できます。
以下にソースを表示しています:
<div id="Introduction"> == はじめに == </div> このページは、WordPress のプラグイン開発者が利用可能な API (Application Programming Interface) フックとその使用方法を明文化したものです。 この文章は、プラグイン開発方法の概説 (そして多くの詳細) を示した「[[プラグインの作成]]」を読んでいることを前提としています。また、この文章は、特に、WordPress がプラグインを作動させるのに使う「フック (hook)」(別名「フィルター (filter)」、「アクション (action)」) のAPI について書かれています。 メモ: この情報は WordPress のバージョン 1.2 以上が対象です。バージョン 1.2 以前は、改造は「ハック」と呼ばれ、WordPress の本体コードの修正が含まれていました。 <div id="Hooks.2C_Actions_and_Filters"> == フック、アクションとフィルタ == </div> WordPress はプラグインを WordPress 本体に “引っ張り込む (hook into)” ためのフックを提供しています。これはつまり、特定のタイミングでプラグインの関数を呼び出したり、それによってプラグインを作動させたりするためのものです。フックには次の 2 種類があります: # [[#Actions|アクション]]: アクションは、実行中の特定のポイントもしくは特定のイベント発生時に WordPress のコアが起動させるフックです。アクション API を使用して、これらのポイントで実行中の PHP 関数を一つ以上指定することができます。 # [[#Filters|フィルター]]: フィルターは、データベースに追加する前やブラウザのスクリーンに送り出す前にさまざまなタイプのテキストを改造するために WordPress が起動させるフックです。プラグインは、フィルター API を使用して、これらのタイミングで特定のタイプのテキストを改造するために一つ以上の PHP 関数の実行を指定することがきます。 場合によっては、アクションとフィルターのどちらでも同じ目的を達成することができます。例えば、プラグインに投稿のテキストを変更させるには、<code>publish_post</code> にアクション関数を追加してもいいですし(これにより、この投稿はデータベース保存時に変更されます)、<code>the_content</code> にフィルター関数を追加してもかまいません(これにより、この投稿はブラウザに表示されるときに変更されます)。 <div id="Actions"> == アクション == </div> '''アクション'''は、WordPress で発生する特定のイベント、例えば投稿の公開、テーマの変更、管理画面の表示などによって始動させらせます。プラグインは PHP 関数を実行することによってこのイベントに反応することができます。このイベントへの反応には次のようなものがあります: * データベースのデータの変更 * メールメッセージの送信 * ブラウザ画面(管理画面もしくは読者が閲覧する画面)に表示する項目の変更 実行の基本的なステップ(詳細はさらに下の章で説明します): # イベント発生時に実行する PHP 関数をプラグインファイル内に作成 # <code>add_action</code> を呼び出して WordPress にフック # プラグイン内の PHP 関数が挿入され、始動される <div id="Create_an_Action_Function"> === アクション関数の作成 === </div> プラグイン内にアクションを作成する最初のステップは、プラグインのアクション機能をもった PHP 関数を作成し、それをプラグインファイルに入れることです(プラグインファイルは ''<code>wp-content/plugins</code>'' ディレクトリに置きます)。例えば、新しい投稿を作成するたびに友達にメールを送信するプラグインを作成するには、次のような関数を定義します: <pre> function email_friends($post_ID) { $friends = 'bob@example.org,susie@example.org'; mail($friends, "sally's blog updated", 'I just put something on my blog: http://blog.example.com'); return $post_ID; } </pre> たいていのアクションでは、関数は一つのパラメータ(通常は、アクションによるが、投稿もしくはコメント ID)を受け取ります。アクションによっては複数のパラメータを取ります。詳細については(もしあれば)アクションのドキュメントか WordPress のソースコードを参照してください。パラメータ以外にも WordPress のグローバル変数にアクセスしたり、WordPress の他の関数(もしくはプラグインファイル内の関数)を呼び出したりすることができます。 '''注意''': 他のプラグインや WordPress コアで使用されている関数名は使用しないよう気をつけてください。詳しくは [[プラグインの作成#Avoiding Function Name Collisions|関数名の衝突を避ける]]を参照してください。 <div id="Hook_to_WordPress"> === WordPress にフックする === </div> 関数の定義が済んだら、次のステップはこの関数を WordPress に”フック”、もしくは”登録(register)”します。これを行なうには、プラグインファイルのグローバルな実行スペース(?global execution space)で <code>add_action()</code> を呼び出します: <pre> add_action ( 'hook_name', 'your_function_name', [priority], [accepted_args] ); </pre> 引数: * <code>hook_name</code> は WordPress によって提供されているアクションフックの名称で、関数がどのイベントと関連するのかを示します * <code>your_function_name</code> は <code>hook_name</code> で設定されたイベントに続いて実行させたい関数の名称です。これは標準の PHP 関数、WordPress コアに含まれる関数、プラグインファイルで定義した関数 (上記の <code>'email_friends'</code> など) です * <code>priority</code> は任意の整数の引数で、特定のアクションに関連した関数の実行時の順番を指定することができます(デフォルト: 10)。数字が小さいほど先に実行され、同じ数字の場合はアクションに追加された順番で実行されます * <code>accepted_args</code> は任意の整数の引数で、関数が取ることのできる引数の数を定義します (デフォルト: 1) 。フックによっては2つ以上の引数を関数に渡すことができるので、その場合に役に立ちます。このパラメータはリリース 1.5.1 で導入されました 上記の例として、プラグインファイルには次のような行が入ります: <pre> add_action('publish_post', 'email_friends'); </pre> 同様に、アクションフックから[[#Removing Actions and Filters|アクションを取り除く]]こともできます。詳しくは該当のセクションを参照してください。 <div id="Install_and_Activate"> === インストールと有効化 === </div> アクションフックを動作させる最後のステップは、ファイルのインストールとプラグインの有効化です。作成した PHP 関数と <code>add_action</code> の呼び出しは両方とも一つの PHP ファイルに入れる必要があります。また、この PHP ファイルは ''<code>wp-content/plugins</code>'' ディレクトリにインストールする必要があります。インストール後、プラグインの管理画面を開き、有効化します。詳細は[[プラグインの管理]]を参照してください。 <div id="Current_Hooks_For_Actions"> === 現行のアクションフック === </div> WordPress のアクションフックの現行リストと WordPress の以前のバージョンのリンクは [[プラグイン API/アクションフック一覧]] を参照してください。 <div id="Filters"> == フィルター == </div> '''フィルター'''は、実行中の特定のポイント、データに何かのアクション(データベースへの追加やブラウザスクリーンに送り出すなど)を行なう前にデータが通過する関数です。フィルターはデータベースとブラウザの間に位置し(WordPress がページを生成するとき)、ブラウザとデータベースの間にも位置します(WordPress が新しい投稿やコメントをデータベースに追加するとき)。WordPress のほとんど入力と出力は最低ひとつはフィルターを通過します。WordPress はデフォルトでいくつかのフィルタリングを行なっていて、プラグインで追加することができます。 WordPress にフィルタを追加する基本的(詳細はさらに下で説明)な手順は: # データをフィルタリングする関数を作成 # <code>add_filter</code> を呼び出して WordPress のフィルタにフック # 作成した PHP 関数をプラグインファイルに入れ、有効化 <div id="Create_a_Filter_Function"> === フィルター関数の作成 === </div> フィルター関数は、未変更のデータを入力として受け取り、変更したデータを返します(場合によっては、そのデータが削除されたり無視されたりすることを示すために null 値になります)。データがフィルタによって変更されていない場合はオリジナルのデータが返され、必要な場合はその後のプラグインでその値を変更を続けることができます。 さて、プラグイン内にフィルタを作成する最初のステップはフィルタリングを行なう PHP 関数を作成することです。そしてこの関数をプラグインファイル(プラグインファイルは ''<code>wp-content/plugins</code>'' ディレクトリに入れます)に入れます。例えば、投稿やコメントにののしり言葉を載せないようにするには、禁止語句のリストを持ったグローバル変数を定義し、次の PHP 関数を作成します: <pre> function filter_profanity($content) { global $profanities; foreach($profanities as $profanity) { $content=str_ireplace($profanity,'{censored}',$content); } return $content; } </pre> '''注意''': 他のプラグインや WordPress コアで使用されている関数名は使用しないよう気をつけてください。詳しくは [[プラグインの作成#Avoiding Function Name Collisions|関数名の衝突を避ける]]を参照してください。 <div id="Hook_in_your_Filter"> === フィルターにフックする === </div> 関数の定義が済んだら、次のステップはこの関数を WordPress に”フック”、もしくは”登録(register)”します。これを行なうには、プラグインファイルのグローバルな実行スペース(?global execution space)で <code>add_filter</code> を呼び出します: <pre> add_filter('hook_name', 'your_filter', [priority], [accepted_args]); </pre> 引数: * <code>hook_name</code> は WordPress によって提供されているフィルターフックの名称で、フィルターがいつ適用されるのかを定義します * <code>your_filter</code> はフィルタリングに使用する関数名です。これは標準の PHP 関数、WordPress コアに含まれる関数、プラグインファイルで定義した関数です * <code>priority</code> は任意の整数の引数で、特定のフィルタに関連した関数の実行時の順番を指定することができます(デフォルト: 10)。数字が小さいほど先に実行され、同じ数字の場合はフィルターに追加された順番で実行されます * <code>accepted_args</code> は任意の整数の引数で、関数が取ることのできる引数を定義します (デフォルト: 1) 。フックによっては2つ以上の引数を関数に渡すことができるので、その場合に役に立ちます。このパラメータはリリース 1.5.1 で導入されました 上記の例として、プラグインファイルの主要実行セクションには次のような行が入り、コメントからののしり言葉をフィルタリングします: <pre> add_filter('comment_text','filter_profanity'); </pre> また、WordPress の関数 <code>remove_filter()</code> を使用して、フィルターフックからフィルターを取り除くこともできます。詳しくは [[#Removing Actions and Filters|アクションとフィルターを取り除く]] を参照してください。 <div id="Install_and_Activate"> === インストールと有効化 === </div> フィルターフックを動作させる最後のステップは、ファイルのインストールとプラグインの有効化です。作成した PHP 関数と <code>add_filter</code> の呼び出しは両方とも一つの PHP ファイルに入れる必要があります。また、この PHP ファイルは ''<code>wp-content/plugins</code>'' ディレクトリにインストールする必要があります。インストール後、プラグインの管理画面を開き有効化します。詳細は[[プラグインの管理]]を参照してください。 <div id="Current_Hooks_for_Filters"> === 現行のフィルターフック === </div> WordPress のフィルターフックの現行リストと WordPress の以前のバージョンのリンクは [[プラグイン API/フィルターフック一覧]] を参照してください。 <div id="Removing_Actions_and_Filters"> == アクションとフィルターの除去 == </div> 場合によっては、WordPress に組み込まれていたり他のプラグインで追加されたりしているアクションやフィルターの一つをプラグインで無効にする必要があるかもしれません。これは <code>remove_filter(’filter_hook’,'filter_function’)</code> もしくは <code>remove_action(’action_hook’,'action_function’)</code> を呼び出すことによって可能です。 例えば、<code>remove_action(’publish_post’,'generic_ping’);</code> は、新規投稿作成時に ping (トラックバック、ピンバック)を送信しないようにします。 もしデフォルトの 10 以外のプライオリティでフックを登録してる場合は、<code>remove_action()</code> への呼び出しでもプライオリティを設定するよう注意してください。また、通常は、WordPress や他のプラグインのソースコードを見て確認し、そのアクションやフィルターがどんなもので何をしているのか分からなければ取り除かないほうがいいでしょう。 <div id="Filters_and_Actions_Applied_By_Default"> == デフォルトで適用されるフィルターとアクション == </div> WordPress でデフォルトで有効になっているフィルターやアクションを見つける一番信頼できる方法は WordPress のコアファイル内で <code>add_filter</code> と <code>add_action</code> を探すことです。 === WordPress 2.1 === [[Version 2.1|WordPress 2.1]] ではデフォルトフィルターとアクションのほとんどが <code>wp-includes/default-filters.php</code> に追加されています。その他に次のファイルに含まれています。 * <code>wp-admin/admin-ajax.php</code> * <code>wp-admin/admin-functions.php</code> * <code>wp-admin/custom-header.php</code> * <code>wp-admin/edit.php</code> * <code>wp-admin/index.php</code> * <code>wp-admin/options-permalink.php</code> * <code>wp-admin/upload-functions.php</code> * <code>wp-admin/upload.php</code> * <code>wp-includes/bookmark.php</code> * <code>wp-includes/general-template.php</code> * <code>wp-includes/kses.php</code> * <code>wp-includes/plugin.php</code> * <code>wp-includes/rewrite.php</code> * <code>wp-includes/template-loader.php</code> * <code>wp-includes/theme.php</code> === WordPress 1.5 === WordPress 1.5 ではデフォルトフィルターとアクションのほとんどのが <code>wp-includes/default-filters.php</code> に追加されています。 <div id="Functions_You_Can_Override"> == オーバーライドできる関数 == </div> 上記のフック (アクションとフィルター) の他に、プラグインで WordPress の挙動を変更するもう一つの方法が WordPress 関数のオーバーライドです。実際、プラグインでの再定義を意図した関数がいくつかあります。この実行ため、WordPress はこれらの関数のうち、すべてのプラグインの読み込み後も定義されていない関数だけを読み込みます。 これらの関数は <code>wp-includes/pluggable.php</code> ファイルで定義されています。次のリストはバージョン 2.1 現在のもので、いくつかは [[関数リファレンス]] で説明を見つけることができます: * <code>set_current_user</code> * <code>wp_set_current_user</code> * <code>wp_get_current_user</code> * <code>get_currentuserinfo</code> * <code>get_userdata</code> * <code>update_user_cache</code> * <code>get_userdatabylogin</code> * <code>wp_mail</code> * <code>wp_login</code> * <code>is_user_logged_in</code> * <code>auth_redirect</code> * <code>check_admin_referer</code> * <code>wp_redirect</code> * <code>wp_get_cookie_login</code> * <code>wp_setcookie</code> * <code>wp_clearcookie</code> * <code>wp_notify_postauthor</code> * <code>wp_notify_moderator</code> * <code>wp_new_user_notification</code> * <code>wp_verify_nonce</code> * <code>wp_create_nonce</code> * <code>wp_salt</code> * <code>wp_hash</code> == 外部資料 == * [http://wp.tekapo.com/2008/01/30/wordpress-plugin-api/ わーどぷれすっ! » Plugin API の訳] -- 当ページの転載元(許可受領) * [http://zone.maple4ever.net/ hiromasa.zone : o) » 「WordPress プラグイン作成時のノウハウ」] {{原文|Plugin API|46009}} {{DEFAULTSORT:ふらくいんAPI}} [[Category:プラグイン]] [[Category:上級トピック]] [[Category:WordPress の開発]] [[Category:UI Link]] [[en:Plugin API]]
このページで使われているテンプレート:
Template:原文
プラグイン API
に戻る。
表示
本文
ノート
ソースを表示
履歴
個人用ツール
38.107.191.106
このIP利用者の会話
ログインまたはアカウント作成
Codex
ナビゲーション
目次
WordPress Codex 日本語版について
コミュニティ・ポータル
ヘルプ
最近更新したページ
特集
WordPress 2.8
WordPress 2.9
リファレンス
バージョン情報
テンプレートファイル名
テンプレート階層
テンプレートタグ
条件分岐タグ
インクルードタグ
関数リファレンス
DBテーブル・項目一覧
アクションフック一覧
フィルターフック一覧
用語集
WordPress MU
WordPress MU
目次(英語版)
ドキュメント整備
Tasks
編集ガイド
Wiki 記法早見表
ページ名対応表
カテゴリ名対応表
訳語一覧
Template 一覧
sandbox(編集の練習場所)
談話室
フォーラム » Docs
Links
WordPress.org
日本語ホーム/ダウンロード
日本語フォーラム
Theme Viewer
Plugin Directory
» more
検索
ツールボックス
リンク元
リンク先の更新状況
アップロード
特別ページ