PublishPress Futureの機能を管理者権限以外のユーザーで使う方法

WordPress
WordPress
WordPress

WordPressで投稿した記事に公開期限を設定できる便利なプラグイン「PublishPress Future」の機能を管理者権限以外のユーザーでも使えるようにする方法です。

学習時間:
およそ4分

PublishPress Future(旧名: Post Expirator)はWordPressの記事に公開期限を設定し、期限が過ぎたら自動で記事を非公開にできる便利なプラグインです。

ただ困ったことが一点、PublishPress Futureの機能は管理者権限のアカウント(ユーザー)しか使えません

WordPressサイトを納品する際は、クライアントが誤ってWordPressの設定を変更してしまうことの無いように編集者投稿者といった権限のアカウントを用意しますが、通常はそれらのアカウントではPublishPress Futureの機能が使えないということです。

とはいえ、PublishPress Futureの機能を管理者権限以外のユーザーで使う方法もちゃんと有りますのでご紹介します。

当記事はWordPressのテーマファイルを直接編集する作業をご紹介しています。
操作を誤るとサイトが正常に動作しなくなる可能性もあるため、ある程度慣れている方向けの内容となっています。

PublishPress Futureの機能を管理者権限以外のユーザーで使う方法

例として編集者権限のユーザーでPublishPress Futureを使えるようにする方法をご紹介します。
有効にしているWordPressテーマのfunctions.phpに以下を記述してください。

PHP (.php)

function add_theme_caps()
{
  $role = get_role('editor');
  $role->add_cap('publishpress_future_expire_post');
}
add_action('admin_init', 'add_theme_caps');

3行目でeditor(編集者)を指定、4行目でeditor(編集者)にPublishPress Futureの使用を許可しています。

投稿者に権限を与えたい場合は3行目の'editor'部分を'author'に変更するだけでOKです。

権限を元に戻す方法

先程変更した権限を元に戻したい場合に、functions.phpから上記のコードを削除しただけでは元には戻らないのでご注意ください。

データベースを書き換えて権限を変更する処理を行っているため、改めて権限を戻す変更をデータベースに行う必要があります。

権限を元に戻す場合は先ほど記述したコードを削除(またはコメントアウト)したうえで、functions.phpに以下を記述してください。

PHP (.php)

function add_theme_caps()
{
  $role = get_role('editor');
  $role->remove_cap('publishpress_future_expire_post');
}
add_action('admin_init', 'add_theme_caps');

あとがき

これ意外と情報が少なくて苦労しました。

どの権限を付与すればPublishPress Futureの機能が使えるようになるのかピンと来なかったので、最初はプラグイン関連の権限を付与してみたもののハズレ。

PHP (.php)

  $role->add_cap('install_plugins');
  $role->add_cap('activate_plugins');
  $role->add_cap('update_plugins');
  $role->add_cap('delete_plugins');
  $role->add_cap('edit_plugins');
  $role->add_cap('resume_plugins');

Check!!

管理画面内の「プラグイン」メニューに関する権限なのでPublishPress Futureの使用可否とは関係なし!

最終的にUser Role EditorというWordPressの権限管理プラグインで関連性のあるパラメータを総当りしようと考えたところ「publishpress_future_expire_post」という文字列を無事発見!

ということでまたお会いしましょう。