2023.12.04 システム
【WordPress】管理画面で記事の編集時に任意の処理を実行させる
こんにちは。
今回はWordPressの管理画面のカスタマイズについて備忘も兼ねて投稿します。
とあるプロジェクトで、管理画面で記事の編集を行うタイミングで任意の処理を実行させたいケースがありましたので、実装方法について調べてみました。
赤枠のリンククリックをした際、通常はそのまま記事の編集ページへ遷移しますが
ページの遷移前に任意の処理を差し込みたいのが、今回やりたいこととなります。
WordPressでは「アクションフック」と呼ばれる各種処理が実行される過程で、独自の処理を挿入できる仕組みが用意されていますので、こちらを利用します。
今回はサンプルとして、特定ユーザーが特定のページにアクセスした場合にアクセス制限をかけるサンプルを作成してみました。
サンプルコード
<?php
// 編集ページに遷移する前に実行したい処理を関数として定義します。
function edit_page_action() {
// ここに独自処理を実装していきます。
$current_user = wp_get_current_user();
$current_user_id = $current_user->ID;
$post_id = (int)$_GET['post'];
// ログインユーザーIDが「1」かつ、記事IDが「2」の場合
//「forbidden.html」にリダイレクトします。
if ($current_user_id == 1 && $post_id == 2) {
wp_safe_redirect("/forbidden.html");
}
}
// アクションフックに定義した関数を紐付けします。
// 編集ページに移動する前に処理を挿入したい場合「load-post.php」を指定します。
add_action('load-post.php', 'edit_page_action');
?>
上記コードを「functions.php」に追記することで、アクションフックと紐付く処理(関数)が有効化されます。
WordPressのカスタマイズを行う際は、様々なプラグインを使用するケースもあるかと思いますが
上記サンプルのような独自関数によるカスタマイズについても、やり方を覚えておくとできることの幅が広がりますね。