目次
カスタム関数
カスタム投稿タイプにカスタム機能を登録します
に移動します。
为其他角色分配自定义功能
清洁提升我们的角色
摘要
ホームページ バックエンド開発 PHPチュートリアル WordPress で基本的な CRM を構築する: カスタム機能を活用する

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

Aug 29, 2023 pm 08:01 PM

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

多くの場合、キーワードと追跡パラメーターで散らかった長いURLは、訪問者を阻止できます。 URL短縮スクリプトはソリューションを提供し、ソーシャルメディアやその他のプラットフォームに最適な簡潔なリンクを作成します。 これらのスクリプトは、個々のWebサイトにとって価値があります

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

2012年のFacebookによる有名な買収に続いて、Instagramはサードパーティの使用のために2セットのAPIを採用しました。これらはInstagramグラフAPIとInstagram Basic Display APIです。

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

これは、LaravelバックエンドとのReactアプリケーションの構築に関するシリーズの2番目と最終部分です。シリーズの最初の部分では、基本的な製品上場アプリケーションのためにLaravelを使用してRESTFUL APIを作成しました。このチュートリアルでは、開発者になります

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

2025 PHP状況調査の発表 2025 PHP状況調査の発表 Mar 03, 2025 pm 04:20 PM

2025 PHP Landscape Surveyは、現在のPHP開発動向を調査しています。 開発者や企業に洞察を提供することを目的とした、フレームワークの使用、展開方法、および課題を調査します。 この調査では、現代のPHP Versioの成長が予想されています

See all articles