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

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

プラガブル関数

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

この項目「プラガブル関数」は、翻訳チェック待ちの項目です。加筆、訂正などを通して、Codex ドキュメンテーションにご協力下さい。

プラガブル関数(Pluggable functions)は WordPress 1.5.1 で導入されました。これらの関数を使うと、特定のコア関数をプラグインを通じて上書きできます。プラグインで上書きできる WordPress コア関数の最新一覧は wp-includes/pluggable.php にあります。すべてのプラグインが読み込まれた後にプラガブル関数が定義されていない時にのみ、WordPress は組み込み済みの関数を使用します。

今後、プラガブル関数が WordPress コアに増えることはありません。その代わりに新しい関数はすべて、出力に対するフィルターを用意するので、プラガブル関数のように機能を上書きできます。

参考: 関数をこの方法で上書きできるのは一回のみのため、同じ関数を別の理由でプラグ(上書き)する複数のプラグインをインストールすることはできません。安全のため、関数を常に if ( !function_exists() ) で囲むのが良いでしょう。そうしないと、プラグイン有効化の際に致命的なエラーが起こるでしょう。

Version 3.5

リファレンス

get_currentuserinfo() 
現在ログインしているユーザーの情報を取得します(ログイン中の場合のみ)。基本的には get_userdata() のラッパーですが、こちらはグローバル変数へ情報を格納します。
get_userdata( $userid ) 
指定したユーザーの情報をデータベースから取得します。
wp_mail( $to, $subject, $message, $headers = '' ) 
PHP のメール関数を使いやすくするラッパー関数です。
wp_login( $username, $password, $already_md5 = false ) 
(非推奨) 指定したユーザー名とパスワードが登録済みユーザーに対応すれば true を返します。
auth_redirect() 
あるページが(内容を表示する前に)この関数を呼び出したとき、ユーザーがログインしていなければ、WordPress のログインページへリダイレクトされます。そしてログインに成功すると、ユーザーは元のページへ戻れます。
wp_redirect( $location ) 
$location パラメータで指定した 絶対 URI (absolute URI) へ Web ブラウザをリダイレクトします。
wp_notify_postauthor( $comment_id, $comment_type='' ) 
指定したコメントの内容を、コメントがついている投稿の作成者へメールします。
wp_notify_moderator( $comment_id ) 
管理用メールアカウントへ、コメントが承認待ちであることを通知します。

管理画面 > 設定 > 一般設定 を見てください。

用例

プラガブル関数でできることの一例は、デフォルトのメール処理の置き換えです。これを行うには wp_mail() 関数を定義するプラグインを書く必要があります。デフォルトの wp_mail() は次のようになっています:

function wp_mail( $to, $subject, $message, $headers = '' ) {
  if( $headers == '' ) {
    $headers = "MIME-Version: 1.0\n" .
      "From: " . get_settings('admin_email') . "\n" . 
      "Content-Type: text/plain; charset=\"" . get_settings('blog_charset') . "\"\n";
  }

  return @mail( $to, $subject, $message, $headers );
}

これを、例えばメールをぜんぶ、別のアドレスへ CC したいとします。するとプラグイン内に下記のコードを入れればよいでしょう:

if( ! function_exists( 'wp_mail' ) ) {
  function wp_mail( $to, $subject, $message, $headers = '' ) {
    if( $headers == '' ) {
      $headers = "MIME-Version: 1.0\n" .
        "From: " . get_settings( 'admin_email' ) . "\n" . 
        "Cc: dummy@example.com\n" .
        "Content-Type: text/plain; charset=\"" . get_settings( 'blog_charset' ) . "\"\n";
    }

    return @mail( $to, $subject, $message, $headers );
  }
}

あるコア関数をこのようにプラグ(上書き)すると、オリジナルの関数は使えなくなることに注意してください。つまり、ここでのエレガントなやり方は $headers 文字列の後ろに CC ヘッダーを足してから、拡張したヘッダーでオリジナルの wp_mail() を呼び出す関数を書くことです。しかし、プラグするとオリジナルの wp_mail() は定義されないので、この方法は利用できません。

関連項目

最新英語版: WordPress Codex » Pluggable_Functions最新版との差分