WordPress でシンプルな CRM システムを作成する方法を検討してきました。このシリーズの最後の部分では、ロールを使用して WordPress 管理インターフェイスの一部へのユーザー アクセスを制限する方法について説明しました。
今日は、カスタム機能を使用して連絡先のカスタム投稿タイプへのアクセスのみを制限する方法について説明します。
以前は WordPress ユーザーのアクセス レベルを引き下げていましたが、ユーザーは編集者または作成者の役割を割り当てることで、引き続き投稿とコメントを管理できます。これらの機能はいずれも役に立たないため、指定したユーザーに連絡先カスタム投稿タイプのみへのアクセスを許可することで、アクセスをさらに制限する必要があります。
これは次の方法で行うことができます:
カスタム機能を登録すると、作成者が新しい連絡先を作成できるかどうかなど、後でどの WordPress ロールがそれらの機能にアクセスできるかを定義できます。
プラグイン ファイルの register_post_type()
関数呼び出しを編集して、capability_type => 'post'
を次のように置き換えます。
リーリー
register_post_type() 関数は次のようになります:
リーリー
パラメータを使用して独自の機能を定義し、それらを Post の同等のパラメータにマップします。これにより、WordPress はこれらの関数の意味を正確に理解できるようになります (つまり、
edit_contact は、連絡先カスタム投稿タイプで動作することを除いて、
edit_post と同じように動作します)。
を使用して上記の機能を WordPress の生の機能にマッピングするように WordPress に指示しました。
これは、どのロールに新しい連絡先機能 (
edit_contact、
edit_contacts など) があるかを WordPress に伝える必要があるために発生します。
を使用すると、新しい WordPress ユーザー ロールを作成し、それに連絡先機能を割り当てることができます。ロールは WordPress オプション データに保存されるため、関数を呼び出す必要があるのは 1 回だけです。
これを行うには、プラグインの
関数の最後に次の関数を追加します。
リーリー
この機能は、CRM と呼ばれる新しい役割を WordPress に追加します。このロールに割り当てられたユーザーは、連絡先機能にのみアクセスできます。したがって、アクセスできるのは連絡先のカスタム投稿タイプのみです。
read
機能も割り当てられていることに注意してください。これは、ユーザーが自分のプロファイル (名前、パスワードなど) を編集できるようにするために必要です。ユーザーがログインすると、WordPress が自動的にプロフィール画面にリダイレクトするため、ユーザーにこれを許可する必要があります。
read
plugin_activation()
関数を 1 回実行するには、プラグイン ファイルの最後に次のコードを追加します。 リーリーこれは、プラグインをアクティブ化するときに、WPTutsCRM
クラスの
関数を呼び出す必要があることを WordPress に伝えます。
WordPress ユーザーを作成/編集し、新しい連絡先ロールに割り当てます
次に、プラグインを非アクティブ化してから再度アクティブ化し、WordPress 管理インターフェイスで
すべてがうまくいけば、ドロップダウン リストに新しい CRM ロールが表示されます:
次に、crm という名前の新しいユーザーを作成し、その新しいユーザーとしてログインしましょう。
Contacts が表示されます。他のメニュー オプションは Dashboard と Profile のみです。
如果我们注销并以 WordPress 管理员、编辑或作者身份重新登录,您会发现 WordPress 管理菜单中仍然缺少联系人自定义帖子类型: 这个是因为我们只分配了 To fix this, let’s assign the Custom Capabilities to the Administrator and Editor Roles by adding the following code to the end of the 在这里,我们迭代要为其分配自定义功能的角色,检查该角色是否存在。如果是,我们就会迭代之前定义的自定义功能,将它们添加到角色中。 您会注意到我们没有向作者角色添加任何自定义功能;这是因为我们不想分配所有功能,因为作者角色传统上只允许对该用户自己的帖子进行写入访问。 让我们通过为作者角色添加一些功能来继续构建我们的 我们的整个函数现在应该如下所示: 以管理员、编辑或作者身份登录现在将在 WordPress 管理菜单中显示“联系人”选项: 如果 WordPress 管理员停用我们的插件, 为此,请在 与我们在插件激活时使用 停用我们的插件后,我们的 我们已经在 WordPress 中成功创建了一个简单的 CRM 系统,探索使用自定义帖子类型、帖子元字段和第三方插件集成来存储有关我们的客户和潜在客户的信息。 本教程还涵盖了 WordPress 的一些更高级的方面,包括通过 WP_List_Table 列显示高级自定义字段数据、过滤我们的帖子查询以搜索我们的高级自定义字段数据,以及通过角色和功能管理用户访问以限制访问仅限我们的 CRM 系统。为其他角色分配自定义功能
CRM
角色我们的联系人自定义帖子类型的功能。因此,所有其他用户角色仍然无权访问此帖子类型。plugin_activation()
function:// Add custom capabilities to Admin and Editor Roles
$roles = array( 'administrator', 'editor' );
foreach ( $roles as $roleName ) {
// Get role
$role = get_role( $roleName );
// Check role exists
if ( is_null( $role) ) {
continue;
}
// Iterate through our custom capabilities, adding them
// to this role if they are enabled
foreach ( $customCaps as $capability => $enabled ) {
if ( $enabled ) {
// Add capability
$role->add_cap( $capability );
}
}
}
plugin_activation()
函数:// Add some of our custom capabilities to the Author Role
$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' );
unset( $role );
/**
* Activation hook to register a new Role and assign it our Contact Capabilities
*/
function plugin_activation() {
// Define our custom capabilities
$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,
);
// Create our CRM role and assign the custom capabilities to it
add_role( 'crm', __( 'CRM', 'tuts-crm'), $customCaps );
// Add custom capabilities to Admin and Editor Roles
$roles = array( 'administrator', 'editor' );
foreach ( $roles as $roleName ) {
// Get role
$role = get_role( $roleName );
// Check role exists
if ( is_null( $role) ) {
continue;
}
// Iterate through our custom capabilities, adding them
// to this role if they are enabled
foreach ( $customCaps as $capability => $enabled ) {
if ( $enabled ) {
// Add capability
$role->add_cap( $capability );
}
}
}
// Add some of our custom capabilities to the Author Role
$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' );
unset( $role );
}
清洁提升我们的角色
CRM
角色将保留在 WordPress 中。但是,鉴于没有其他插件或 WordPress 的一部分使用此角色,因此它是多余的 - 因此我们需要确保在停用我们的插件时删除 CRM
角色。plugin_activation()
函数下方添加以下函数:/**
* Deactivation hook to unregister our existing Contacts Role
*/
function plugin_deactivation() {
remove_role( 'crm' );
}
register_activation_hook()
函数的方式相同,当我们的插件停用时,我们可以使用 register_deactivation_hook()
函数。让我们在 register_activation_hook
调用下面添加以下内容:register_deactivation_hook( __FILE__, array( &$wpTutsCRM, 'plugin_deactivation' ) );
CRM
角色将不再可用。摘要
以上がWordPress で基本的な CRM を構築する: カスタム機能を活用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。