WordPress で基本的な CRM を構築する: カスタム機能を活用する

WBOY
リリース: 2023-08-29 20:02:02
オリジナル
996 人が閲覧しました

WordPress でシンプルな CRM システムを作成する方法を検討してきました。このシリーズの最後の部分では、ロールを使用して WordPress 管理インターフェイスの一部へのユーザー アクセスを制限する方法について説明しました。

今日は、カスタム機能を使用して連絡先のカスタム投稿タイプへのアクセスのみを制限する方法について説明します。

カスタム関数

以前は WordPress ユーザーのアクセス レベルを引き下げていましたが、ユーザーは編集者または作成者の役割を割り当てることで、引き続き投稿とコメントを管理できます。これらの機能はいずれも役に立たないため、指定したユーザーに連絡先カスタム投稿タイプのみへのアクセスを許可することで、アクセスをさらに制限する必要があります。

これは次の方法で行うことができます:

  1. カスタム投稿タイプにカスタム機能を登録します
  2. 新しい WordPress ユーザー ロールを作成し、新しいカスタム機能のみをそのロールに割り当てます
  3. WordPress ユーザーを作成/編集し、新しい連絡先ロールに割り当てます

カスタム投稿タイプにカスタム機能を登録します

カスタム機能を登録すると、作成者が新しい連絡先を作成できるかどうかなど、後でどの WordPress ロールがそれらの機能にアクセスできるかを定義できます。

プラグイン ファイルの register_post_type() 関数呼び出しを編集して、capability_type => 'post' を次のように置き換えます。 リーリー

register_post_type() 関数は次のようになります: リーリー

ここでは 2 つのことが起こります:

  1. capability パラメータを使用して独自の機能を定義し、それらを Post の同等のパラメータにマップします。これにより、WordPress はこれらの関数の意味を正確に理解できるようになります (つまり、edit_contact は、連絡先カスタム投稿タイプで動作することを除いて、edit_post と同じように動作します)。
  2. 私たちは、施行のために
  3. map_meta_cap を使用して上記の機能を WordPress の生の機能にマッピングするように WordPress に指示しました。
WordPress 管理者を任意のユーザーとしてリロードすると、連絡先カスタム投稿タイプが WordPress 管理者メニューから消えていることがわかります:

在 WordPress 中构建基本 CRM:利用自定义功能
これは、どのロールに新しい連絡先機能 (

edit_contactedit_contacts など) があるかを WordPress に伝える必要があるために発生します。

新しい WordPress ユーザー ロールを作成し、新しいカスタム機能を割り当てます

add_role()

を使用すると、新しい WordPress ユーザー ロールを作成し、それに連絡先機能を割り当てることができます。ロールは WordPress オプション データに保存されるため、関数を呼び出す必要があるのは 1 回だけです。 これを行うには、プラグインの

__construct()

関数の最後に次の関数を追加します。 リーリー この機能は、CRM と呼ばれる新しい役割を WordPress に追加します。このロールに割り当てられたユーザーは、連絡先機能にのみアクセスできます。したがって、アクセスできるのは連絡先のカスタム投稿タイプのみです。

このロールには

read

機能も割り当てられていることに注意してください。これは、ユーザーが自分のプロファイル (名前、パスワードなど) を編集できるようにするために必要です。ユーザーがログインすると、WordPress が自動的にプロフィール画面にリダイレクトするため、ユーザーにこれを許可する必要があります。

read

関数を割り当てなかった場合、ユーザーのログイン時に次のことが起こります:

在 WordPress 中构建基本 CRM:利用自定义功能plugin_activation()

関数を 1 回実行するには、プラグイン ファイルの最後に次のコードを追加します。 リーリー

これは、プラグインをアクティブ化するときに、WPTutsCRM クラスの

plugin_activation()

関数を呼び出す必要があることを WordPress に伝えます。 WordPress ユーザーを作成/編集し、新しい連絡先ロールに割り当てます 次に、プラグインを非アクティブ化してから再度アクティブ化し、WordPress 管理インターフェイスで

ユーザー > 新規追加

に移動します。

すべてがうまくいけば、ドロップダウン リストに新しい CRM ロールが表示されます:

次に、

crm在 WordPress 中构建基本 CRM:利用自定义功能 という名前の新しいユーザーを作成し、その新しいユーザーとしてログインしましょう。

Contacts

が表示されます。他のメニュー オプションは DashboardProfile のみです。

为其他角色分配自定义功能

如果我们注销并以 WordPress 管理员、编辑或作者身份重新登录,您会发现 WordPress 管理菜单中仍然缺少联系人自定义帖子类型:

在 WordPress 中构建基本 CRM:利用自定义功能

这个是因为我们只分配了 CRM 角色我们的联系人自定义帖子类型的功能。因此,所有其他用户角色仍然无权访问此帖子类型。

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 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 );
	
}
ログイン後にコピー

以管理员、编辑或作者身份登录现在将在 WordPress 管理菜单中显示“联系人”选项:

在 WordPress 中构建基本 CRM:利用自定义功能

清洁提升我们的角色

如果 WordPress 管理员停用我们的插件,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 系统,探索使用自定义帖子类型、帖子元字段和第三方插件集成来存储有关我们的客户和潜在客户的信息。

本教程还涵盖了 WordPress 的一些更高级的方面,包括通过 WP_List_Table 列显示高级自定义字段数据、过滤我们的帖子查询以搜索我们的高级自定义字段数据,以及通过角色和功能管理用户访问以限制访问仅限我们的 CRM 系统。

以上がWordPress で基本的な CRM を構築する: カスタム機能を活用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!