プラグイン可能なWordPress関数
WordPress Pluggable Functions について聞いたことがありますか?そうでない場合は、この記事に注目してください。一言で言えば、プラグ可能関数はオーバーライドできる WordPress のコア関数です。これらすべての関数は 1 つのファイル「wp-includes/pluggable.php」にあります。プラグ可能関数は WordPress 1.5.1 で導入されましたが、WordPress の最新バージョンではこの方法は使用されなくなりました。最近の関数は出力にフィルターを使用するようになりました。ただし、プラグイン可能な関数をオーバーライドすることはできます。これについて、この投稿で取り上げたいと思います。
どの機能ですか?
プラグ可能関数は次のとおりです。
- 認証リダイレクト
- check_admin_referer
- check_ajax_referer
- アバターの取得
- get_currentuserinfo
- 電子メールによるユーザーの取得
- get_user_by
- get_userdatabylogin
- get_userdata
- is_user_logged_in
- wp_authenticate
- wp_check_パスワード
- wp_clear_auth_cookie
- wp_create_nonce
- wp_generate_auth_cookie
- wp_generate_password
- wp_get_current_user
- wp_ハッシュ_パスワード
- wp_ハッシュ
- wp_logout
- wp_mail
- wp_new_user_notification
- wp_nonce_tick
- wp_notify_moderator
- wp_notify_postauthor
- wp_parse_auth_cookie
- wp_password_change_notification
- wp_rand
- wp_リダイレクト
- wp_safe_redirect
- wp_salt
- wp_sanitize_redirect
- wp_set_auth_cookie
- wp_set_current_user
- wp_set_password
- wp_text_diff
- wp_validate_auth_cookie
- wp_validate_redirect
- wp_verify_nonce
各関数の名前をクリックすると、そのコーデックス ページにアクセスできます。
プラグ可能な関数をオーバーライドする方法
これは非常に簡単で、プラグイン内に「if ( !function_exists() )…」ステートメントを含むファイルを作成し、関数を再定義するだけです。開始時に元の関数をコピーして貼り付けることを強くお勧めします。これにより、関数が確実に動作することが確認できます。以下は空の例です。
if ( ! function_exists('wp_notify_postauthor') ) :
/**
* Notify an author of a comment/trackback/pingback to one of their posts.
*
* @since 1.0.0
*
* @param int $comment_id Comment ID
* @param string $comment_type Optional. The comment type either 'comment' (default), 'trackback', or 'pingback'
* @return bool False if user email does not exist. True on completion.
*/
function wp_notify_postauthor( $comment_id, $comment_type = '' ) {
/* This is where you redefine the function */
}
endif;
「wp_notify_postauthor()」関数についてお話したいと思います。これは、新しいコメントが追加されたときに投稿の作成者に電子メールを送信する責任を負います。私のプラグインの 1 つである WordPress Issues Manager では、この通知を無効にする必要がありましたが、特定のカスタム投稿タイプのみでした。そこで、関数全体をコピーし、これを追加しただけです。
if ( ! function_exists('wp_notify_postauthor') ) :
/**
* Notify an author of a comment/trackback/pingback to one of their posts.
*
* @since 1.0.0
*
* @param int $comment_id Comment ID
* @param string $comment_type Optional. The comment type either 'comment' (default), 'trackback', or 'pingback'
* @return bool False if user email does not exist. True on completion.
*/
function wp_notify_postauthor( $comment_id, $comment_type = '' ) {
if( $post->post_type != 'issue'):
/* content of the original function */
endif;
}
endif;
これは単純ですが、大幅な変更を加えたり、カスタム アクションにフックされた完全なカスタム関数を作成したりする必要がなく、うまく機能します。
wp_mail()
プラグ可能な関数のリストで見たように、wp_mail() はプラグ可能な関数です。この機能はメールの送信に使用される機能です。 WordPress のどこでも、メールが送信されるときにこの関数が使用されます。だからこそ、カスタマイズするのはとても面白いのです。たとえば、WordPress インストールから送信されるすべての電子メールに HTML のデフォルト テンプレートを使用できます。
また、すべてのメッセージの隠しコピーを特定の電子メールに送信して、一種のバックアップを作成することもできます (これは、誰かがメッセージを受信しなかったと言ったときに便利です!)。
wp_authenticate()
また、wp_authenticate() を変更して追加パラメータを追加して、サイトのセキュリティを強化することもできます(ブルート フォース攻撃など)。
auth_redirect()
この関数は、ユーザーがログインしているかどうかを確認し、ログインしていない場合はログイン ページにリダイレクトします。これにより、関数をオーバーライドして、デフォルトのログイン ページではなくカスタム ページにユーザーをリダイレクトするのが非常に簡単になります (たとえば、wp-admin フォルダーを非表示にしたい場合)。
wp_generate_password()
この機能はパスワードを自動生成する機能です。正直なところ、実際に変更する必要はありませんが、ブルート フォース攻撃が何であるかを理解したので、より強力なパスワードを作成することに興味を持つかもしれません。まあ、これは改善すべき機能です。
結論
WordPress のプラグ可能関数に関するこの短い投稿の締めくくりとして、新しい関数はそのようには動作しなくなったという事実を指摘したいと思います。上で書いたように、彼らは現在フィルターを使用しています。ただし、プラグイン可能な関数は、特に本当に特殊なプラグインを作成する場合には重要な関数です。ただし、プラグ可能関数を使用する場合は注意してください。新しく作成した機能が完全に動作しない場合は、Web サイトの一部が機能しなくなる可能性があるため、あらゆる条件でテストしてください。