京都大学東南アジア地域研究研究所 情報処理室

(WordPress) かゆいところに手を届かしたい「functions.php」(技術者向け)

WordPressを使っていくと、いろいろ細かい機能を追加したいものです。
ここでは、functions.phpを通じて、プラグインの設定を変更したり、機能追加したりする方法についての技術的なメモを書き出します。

実際の運用で使う際には、必ず実験サイトを立ちあげて、そちらで試してください。
※安易に使って記述ミスをすると、「サイトが止まります」。その場合には、FTPなどを通じて該当ファイルを直接編集して問題箇所を修正せねばなりません。これについてのフォローは責任を負いかねるため、不明な場合には必ずWordPressのPHPプログラミングに精通している開発者に聞いてください。

WordPress本体

メディア等で扱える拡張子の追加

プラグインを作って公式ディレクトリに登録しましたので、そちらを使って貰えればと思います。

特定サイドメニューの非表示(2013/08/27)

編集者にはいらないメニューは極力見えないようにしたいものです。
カスタム投稿、プラグインが追加したメニューなども消すことができます。
ここでは、「管理者以外」は、「コメント」「カスタム投稿(hogehogeと名前付けしていると仮定)」「Contact Form 7」「Subscribe2」のメニューを非表示にします。


function my_remove_menu(){
     remove_menu_page('edit-comments.php');  // コメントの非表示
     remove_menu_page('edit.php?post_type=hogehoge'); // カスタム投稿「hogehoge」の非表示

     // プラグインによる追加の場合には、管理画面のid(<li id="hogehoge-{slug}">)のslugを指定すること 
     remove_menu_page('wpcf7'); // Contact form 7の「お問い合わせ」を非表示
     remove_menu_page('s2'); // Subscribe2を非表示
}
 // 管理者以外は指定メニューを消す
 if(!current_user_can('administrator'))
    add_action('admin_menu', 'my_remove_menu');

 

プラグイン設定の上書き

WordPress Download Monitorで編集者に特定権限を付与(2013/08/27)

※2016年6月7日現在、下記で紹介するWordPress Download Monitorプラグインはなく、別のDownload Monitorプラグインに置き換わっています。

通常は、管理者ユーザしか使えません。これを編集者も使えるようにするための方法です。
下記の設定によって、追加と編集が可能になります。設定やログ閲覧は不可です。


function add_theme_caps() {
  $role = get_role( 'editor' );
  $role->add_cap( 'user_can_edit_downloads'); 
  $role->add_cap( 'user_can_add_new_download');
  $role->remove_cap( 'user_can_config_downloads');
  $role->remove_cap( 'user_can_view_downloads_log');
}
add_action( 'admin_init', 'add_theme_caps');

ただし、一旦登録してしまうと設定をOFFにしても有効になります。
設定の追加は、add_capに、設定の削除はremove_capに明示しましょう。

TablePressで編集者への特定権限を削除(2013/08/27)

WP-Table Reloadedの後継にあたります。
全面的に書き直されたTablePressについては、いくつかの権限について上書きが可能です。
ここでは、「編集者、作成者は、テーブル削除、インポート、About閲覧を不可」にします。


function add_theme_caps2() {
  foreach (array('editor','author') as $user){
       $role = get_role( $user );
       $role->remove_cap( 'tablepress_delete_tables');
       $role->remove_cap( 'tablepress_import_tables');
       $role->remove_cap( 'tablepress_access_options_screen');
       $role->remove_cap( 'tablepress_access_about_screen');
  }
}
add_action( 'admin_init', 'add_theme_caps2');

何が出来るかについては、tablepressのソースフォルダ以下で「cap」をキーワードに検索してみてください。

2013年8月27日 情報処理室長・木谷

モバイルバージョンを終了