Tilføj rettigheder til WordPress plugin

Hvis du vil have dine egne rettigheder på dit plugin kan du tilføje capabilities to den rolle som brugeren har.
Så hvis du vil have et capability som hedder read_zebs_mit_super_plugin, for alle administrator brugere, kan du gøre det ved at tilføje følgende kode.

/**
* Add admin capabilities to admininistrator role
*/
register_activation_hook(__FILE__, function() {
  // hent administrator rolle
  $role = get_role( 'administrator' );
  // tilføj capability to rollen
  $role->add_cap('read_zebs_mit_super_plugin', true);
}

For at sikre at det også virker på en Multisite installation skal du sørge for at skifte til det site som skal have den ønskede capability.
Det kan se ud som følger:

/**
 * Når dette plugin aktiveres
 */
register_activation_hook(__FILE__, function($networkwide) {
  global $wpdb;

  if (function_exists('is_multisite') && is_multisite()) {
    // check if it is a network activation - if so, run the activation function for each blog id
    if ($networkwide) {
      $current_blog = $wpdb->blogid;
      // Get all blog ids
      $blogids = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs");
      foreach ($blogids as $blog_id) {
        switch_to_blog($blog_id);
        // hent administrator rolle
        $role = get_role( 'administrator' );
        // tilføj capability to rollen
        $role->add_cap('read_zebs_mit_super_plugin', true);
      }
      switch_to_blog($current_blog);
      return;
    }
  }
  // hent administrator rolle 
  $role = get_role( 'administrator' ); 
  // tilføj capability to rollen 
  $role->add_cap('read_zebs_mit_super_plugin', true); 
}

/**
 * Tilføj capability når der oprettes en ny blog
 */ 
add_action('wpmu_new_blog', function($blog_id, $user_id, $domain, $path, $site_id, $meta) { 
  global $wpdb; 

  // switch blog 
  $current_blog = $wpdb->blogid; 
  switch_to_blog($blog_id); 

  // hent administrator rolle 
  $role = get_role( 'administrator' );
  // tilføj capability to rollen 
  $role->add_cap('read_zebs_mit_super_plugin', true); 

  // skift tilbage til udgangs bloggen 
  switch_to_blog($current_blog); 
} 

Leave a comment

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

This site uses Akismet to reduce spam. Learn how your comment data is processed.