We hebben gekeken hoe een eenvoudig CRM-systeem kan worden gemaakt in WordPress. In het laatste deel van deze reeks hebben we onderzocht hoe u rollen kunt gebruiken om gebruikerstoegang tot delen van de WordPress-beheerinterface te beperken.
Vandaag bespreken we hoe u de toegang tot alleen het Aangepaste berichttype van Contactpersonen kunt beperken met behulp van Aangepaste mogelijkheden.
Hoewel we eerder het toegangsniveau van onze WordPress-gebruikers hebben verlaagd, kunnen gebruikers door het toewijzen van deze items aan een Editor- of auteursrol, nog steeds Posts en opmerkingen beheren. Geen van deze functies is nuttig voor ons, dus we moeten de toegang verder beperken, zodat toegewezen gebruikers alleen toegang hebben tot het Aangepaste berichttype van contactpersonen.
We kunnen dit doen door:
Door aangepaste functies te registreren, kunnen we later definiëren welke WordPress-rol (len) toegang hebben tot deze mogelijkheden, bijvoorbeeld of een auteur een nieuw contact kan maken.
Laten we onze plugin-bestanden bewerken register_post_type ()
functieaanroep, vervangen capability_type => 'plaatsen'
met het volgende:
'capabilities' => array ('edit_others_posts' => 'edit_others_contacts', 'delete_others_posts' => 'delete_others_contacts', 'delete_private_posts' => 'delete_private_contacts', 'edit_private_posts' => 'edit_private_contacts', 'read_private_posts' => 'read_private_contacts ',' edit_published_posts '=>' edit_published_contacts ',' publish_posts '=>' publish_contacts ',' delete_published_posts '=>' delete_published_contacts ',' edit_posts '=>' edit_contacts ',' delete_posts '=>' delete_contacts ',' edit_post ' => 'edit_contact', 'read_post' => 'read_contact', 'delete_post' => 'delete_contact',), 'map_meta_cap' => true,
Onze register_post_type ()
functie zou er nu moeten uitzien als:
/ ** * Registreert een aangepast berichttype genaamd contact * / function register_custom_post_type () register_post_type ('contact', array ('labels' => array ('name' => _x ('Contacts', 'post type algemene naam' , 'tuts-crm'), 'singular_name' => _x ('Contact', 'post type singular name', 'tuts-crm'), 'menu_name' => _x ('Contacts', 'admin menu', ' tuts-crm '),' name_admin_bar '=> _x (' Contact ',' nieuw toevoegen op beheerbalk ',' tuts-crm '),' add_new '=> _x (' Nieuw toevoegen ',' contact ',' tuts -crm '),' add_new_item '=> __ (' Nieuw contact toevoegen ',' tuts-crm '),' new_item '=> __ (' Nieuw contact ',' tuts-crm '),' edit_item '=> __ ('Bewerk contact', 'tuts-crm'), 'view_item' => __ ('Bekijk contact', 'tuts-crm'), 'all_items' => __ ('Alle contacten', 'tuts-crm') , 'search_items' => __ ('Zoek contacten', 'tuts-crm'), 'parent_item_colon' => __ ('Parent Contacts:', 'tuts-crm'), 'not_found' => __ ('Geen contacten gevonden. ',' tuts-crm '),' not_found_in_trash '=> __ (' Geen contacten gevonden in Prullenbak. ',' tuts-crm '),), // Frontend' has_archive '=> false, 'public' => false, 'publicly_queryable' => false, // Admin 'capabilities' => array ('edit_others_posts' => 'edit_others_contacts', 'delete_others_posts' => 'delete_others_contacts', 'delete_private_posts' => ' delete_private_contacts ',' edit_private_posts '=>' edit_private_contacts ',' read_private_posts '=>' read_private_contacts ',' edit_published_posts '=>' edit_published_contacts ',' publish_posts '=>' publish_contacts ',' delete_published_posts '=>' delete_published_contacts ',' edit_posts '=>' edit_contacts ',' delete_posts '=>' delete_contacts ',' edit_post '=>' edit_contact ',' read_post '=>' read_contact ',' delete_post '=>' delete_contact ',),' map_meta_cap '=> true, 'menu_icon' => 'dashicons-businessman', 'menu_position' => 10, 'query_var' => true, 'show_in_menu' => true, 'show_ui' => true, 'supports' => array ('title ',' auteur ',' opmerkingen ',),));
Hier gebeuren twee dingen:
mogelijkheden
argument, in kaart brengend aan hun Post-equivalenten. Dit zorgt ervoor dat WordPress precies begrijpt wat de mogelijkheden betekenen (d.w.z.. bewerk contact
gedraagt zich op dezelfde manier als de bericht bewerken
mogelijkheid, behalve dat het voor ons Aangepast berichttype is).map_meta_cap
, dus ze worden gehandhaafd.Laad het WordPress-beheer opnieuw als elke gebruiker en je ziet onze Aangepaste berichttype voor Contacten is verdwenen uit het WordPress-beheermenu:
Dit is gebeurd omdat we nu aan WordPress moeten vertellen welke rollen onze nieuwe contactmogelijkheden hebben (bewerk contact
, edit_contacts
, enz).
Gebruik makend van add_role ()
, we kunnen een nieuwe WordPress-gebruikersrol maken en onze contactmogelijkheden toewijzen. De rol wordt opgeslagen in de WordPress Options-gegevens, dus we hoeven deze functie maar één keer te bellen.
Voeg hiervoor de volgende functie toe onder aan het einde van de __construct ()
functie in onze plug-in:
/ ** * Activeringshaak om een nieuwe rol te registreren en deze onze contactmogelijkheden toe te wijzen * / function plugin_activation () // Definieer onze aangepaste mogelijkheden $ customCaps = array ('edit_others_contacts' => true, 'delete_others_contacts' => true, ' delete_private_contacts '=> true,' edit_private_contacts '=> true,' read_private_contacts '=> true,' edit_published_contacts '=> true,' publish_contacts '=> true,' delete_published_contacts '=> true,' edit_contacts '=> true,' delete_contacts '=> true,' edit_contact '=> true,' read_contact '=> true,' delete_contact '=> true,' read '=> true,); // Maak onze CRM-rol en wijs de aangepaste mogelijkheden toe aan het add_role ('crm', __ ('CRM', 'tuts-crm'), $ customCaps);
Met deze functie wordt een nieuwe rol met de naam CRM toegevoegd aan WordPress. Gebruikers die aan deze rol zijn toegewezen, hebben alleen toegang tot de contactmogelijkheden. Daarom hebben ze alleen toegang tot het Aangepaste berichttype van contactpersonen.
Merk op dat we ook de lezen
mogelijkheid om deze rol te vervullen. Dit is vereist om gebruikers toe te staan hun profiel (naam, wachtwoord, enz.) Te bewerken. We moeten Gebruikers toestaan dit te doen, omdat wanneer ze inloggen, WordPress ze automatisch doorverwijst naar het profielscherm.
Als we het lezen
mogelijkheid, dit is wat er zou gebeuren wanneer de gebruiker inlogt:
Om onze plugin_activation ()
eenmaal functioneren, laten we de volgende code toevoegen aan het einde van ons plugin-bestand:
register_activation_hook (__FILE__, array (& $ wpTutsCRM, 'plugin_activation'));
Dit vertelt WordPress dat het bij het activeren van plug-ins de plugin_activation ()
functie binnen onze WPTutsCRM
klasse.
Schakel vervolgens uw Plugin uit en opnieuw, en navigeer vervolgens naar Gebruikers> Nieuw toevoegen in de WordPress Administration-interface.
Als alles goed is verlopen, ziet u de nieuwe CRM-rol in de vervolgkeuzelijst verschijnen:
Laten we doorgaan en een nieuwe gebelde gebruiker maken crm, en log in als die nieuwe gebruiker. We zouden nu onze moeten zien Contacten, met de Dashboard en Profiel als de enige andere menu-opties:
Als we uitloggen en opnieuw inloggen als een WordPress-beheerder, -editor of -auteur, zult u merken dat het Aangepaste berichttype voor contactpersonen nog steeds ontbreekt in het WordPress-beheermenu:
Dit komt omdat we alleen de CRM
Rol de mogelijkheden van ons op maat gemaakte berichttypen. Daarom hebben alle andere gebruikersrollen nog steeds geen toegang tot dit berichttype.
Om dit op te lossen, laten we de Custom Capabilities toewijzen aan de Administrator en Editor Rollen door de volgende code toe te voegen aan het einde van de plugin_activation ()
functie:
// Aangepaste mogelijkheden toevoegen aan beheer- en editorrollen $ roles = array ('beheerder', 'editor'); foreach ($ roles as $ roleName) // Get role $ role = get_role ($ roleName); // Controleer de rol als (is_null ($ role)) continue; // Itereren via onze aangepaste mogelijkheden, ze // aan deze rol toevoegen als ze zijn ingeschakeld voor elk ($ customCaps als $ capability => $ enabled) if ($ enabled) // Mogelijkheid toevoegen $ role-> add_cap ($ vermogen);
Hier herhalen we de Rollen waaraan we Custom Capabilities willen toewijzen, waarbij wordt gecontroleerd of de rol bestaat. Als dit het geval is, doorlopen we de aangepaste mogelijkheden die we eerder hebben gedefinieerd en voegden ze toe aan de rol.
U zult merken dat we geen Aangepaste mogelijkheden hebben toegevoegd aan de auteursrol; Dit is omdat we niet alle Capaciteiten willen toewijzen, omdat de Auteurstaak traditioneel alleen schrijftoegang toestaat naar de eigen Posts van die Gebruiker.
Laten we doorgaan met het bouwen van onze plugin_activation ()
functie door enkele Capaciteiten toe te voegen voor de Auteur Rol:
// Voeg enkele van onze aangepaste mogelijkheden toe aan de auteur Rol $ role = get_role ('auteur'); $ role-> add_cap ('edit_contact'); $ role-> add_cap ('edit_contacts'); $ role-> add_cap ('publish_contacts'); $ role-> add_cap ('read_contact'); $ role-> add_cap ('delete_contact'); niet ingesteld ($ rol);
Onze hele functie zou er nu moeten uitzien als:
/ ** * Activeringshaak om een nieuwe rol te registreren en deze onze contactmogelijkheden toe te wijzen * / function plugin_activation () // Definieer onze aangepaste mogelijkheden $ customCaps = array ('edit_others_contacts' => true, 'delete_others_contacts' => true, ' delete_private_contacts '=> true,' edit_private_contacts '=> true,' read_private_contacts '=> true,' edit_published_contacts '=> true,' publish_contacts '=> true,' delete_published_contacts '=> true,' edit_contacts '=> true,' delete_contacts '=> true,' edit_contact '=> true,' read_contact '=> true,' delete_contact '=> true,' read '=> true,); // Maak onze CRM-rol en wijs de aangepaste mogelijkheden toe aan het add_role ('crm', __ ('CRM', 'tuts-crm'), $ customCaps); // Aangepaste mogelijkheden toevoegen aan beheer- en editorrollen $ roles = array ('beheerder', 'editor'); foreach ($ roles as $ roleName) // Get role $ role = get_role ($ roleName); // Controleer de rol als (is_null ($ role)) continue; // Itereren via onze aangepaste mogelijkheden, ze // aan deze rol toevoegen als ze zijn ingeschakeld voor elk ($ customCaps als $ capability => $ enabled) if ($ enabled) // Mogelijkheid toevoegen $ role-> add_cap ($ vermogen); // Voeg enkele van onze aangepaste mogelijkheden toe aan de auteur Rol $ role = get_role ('author'); $ role-> add_cap ('edit_contact'); $ role-> add_cap ('edit_contacts'); $ role-> add_cap ('publish_contacts'); $ role-> add_cap ('read_contact'); $ role-> add_cap ('delete_contact'); niet ingesteld ($ rol);
Als u inlogt als beheerder, bewerker of auteur, wordt nu de optie Contactpersonen weergegeven in het WordPress-beheermenu:
Als de WordPress Administrator onze plug-in deactiveert, de CRM
De rol blijft bestaan in WordPress. Aangezien geen enkele andere plug-in of onderdeel van WordPress deze rol gebruikt, is het echter overbodig, dus we moeten ervoor zorgen dat CRM
De rol is verwijderd als onze plug-in gedeactiveerd is.
Voeg hiervoor de volgende functie toe onder de plugin_activation ()
functie:
/ ** * Deactiveringshaak om onze bestaande contactpersonenrol af te melden * / function plugin_deactivation () remove_role ('crm');
Op dezelfde manier gebruikten we de register_activation_hook ()
functie wanneer onze plug-in is geactiveerd, kunnen we de register_deactivation_hook ()
wanneer onze plug-in deactiveert. Laten we het volgende toevoegen onder de register_activation_hook
bellen:
register_deactivation_hook (__FILE__, array (& $ wpTutsCRM, 'plugin_deactivation'));
Wanneer onze plug-in gedeactiveerd is, onze CRM
Rol is niet langer beschikbaar.
We hebben met succes een eenvoudig CRM-systeem ontwikkeld in WordPress, waarbij we het gebruik van aangepaste berichttypes, bericht-meta-velden en integratie met plug-ins door derden hebben onderzocht om informatie over onze klanten en prospects op te slaan.
Deze tutorial heeft ook enkele van de meer geavanceerde aspecten van WordPress behandeld, door het weergeven van geavanceerde aangepaste veldgegevens via WP_List_Table kolommen, het filteren van onze postquery om onze geavanceerde aangepaste velden te doorzoeken en het beheren van gebruikerstoegang via rollen en mogelijkheden om toegang tot alleen onze CRM-systeem.