>  기사  >  웹 프론트엔드  >  WordPress에서 간단한 CRM 만들기: 사용자 정의 필드 만들기

WordPress에서 간단한 CRM 만들기: 사용자 정의 필드 만들기

WBOY
WBOY원래의
2023-08-29 15:49:121325검색

이 시리즈에서는 WordPress에서 간단한 CRM 시스템을 만드는 방법을 살펴보았습니다. 이 시리즈의 첫 번째 부분에서는 "연락처" 사용자 정의 게시물 유형을 등록하는 WordPress 플러그인을 만들었지만 연락처에 대한 추가 정보를 저장하는 방법은 다루지 않았습니다.

사용자 정의 필드 만들기

WordPress에는 플러그인 및 테마 개발자가 다양한 WordPress 관리 화면에 대한 사용자 정의 메타 상자를 등록할 수 있는 add_meta_box() 기능이 있습니다.

WordPress는 게시물이나 페이지를 만들 때 표시할 자체 메타 상자 중 일부를 등록합니다. 예를 들어, 페이지에 페이지 속성메타 상자:

이 있습니다.

WordPress에서 간단한 CRM 만들기: 사용자 정의 필드 만들기

Contacts사용자 정의 게시물 유형에 메타박스를 추가해 보겠습니다. 이 시리즈의 첫 번째 튜토리얼에서 생성한 플러그인 파일을 엽니다. 그런 다음 플러그인 생성자에서 다음과 일치하도록 코드를 업데이트합니다. 이것이 우리의 register_meta_boxes() 函数注册到 add_meta_boxes 작업이 될 것입니다:

으아악

다음으로 register_meta_boxes() 함수에서 register_meta_boxes() 函数中,我们添加对 add_meta_box() 的调用。这告诉 WordPress 我们需要一个名为 Contact Details 的元框,它由 output_meta_box() 호출을 추가합니다. 이는 output_meta_box() 함수에 의해 렌더링되는

Contact Details

라는 메타 상자가 필요하다는 것을 WordPress에 알려줍니다. 생성자 뒤에 다음 코드를 추가합니다. output_meta_box()函数,该函数是由上面的add_meta_box调用的。在register_meta_boxes() 으아악

마지막으로

함수 뒤에 다음 코드를 추가해야 합니다. 으아악 연락처 사용자 정의 게시물 유형에 메타 상자가 나타나는지 확인해 보겠습니다.

연락처 > 새 연락처 추가

로 이동하여 WordPress 대시보드에 새 연락처를 만듭니다.

모든 내용이 올바르게 작성되면 아래 스크린샷과 비슷한 내용이 표시됩니다. WordPress에서 간단한 CRM 만들기: 사용자 정의 필드 만들기

메타 상자를 필드로 채우기output_meta_box

이 메타 상자에 이메일 주소 필드를 추가해 보겠습니다.

함수를 다음 코드로 변경합니다.

으아악

플러그인 코드를 저장하고 연락처 추가 화면을 다시 로드하세요. 연락처 세부 정보 메타 상자에 새 이메일 주소 필드가 표시됩니다. WordPress에서 간단한 CRM 만들기: 사용자 정의 필드 만들기

사용자 정의 필드 데이터 저장save_post

아직 끝나지 않았습니다. 사용자가 필드에 입력한 내용을 저장하도록 WordPress에 지시해야 합니다. WordPress에서는

작업에 대한 함수를 등록하여 이를 수행합니다.

대부분의 작업과 마찬가지로 플러그인 생성자에 작업을 등록합니다. save_meta_boxes() 으아악

다음으로

함수를 만들어 보겠습니다. save_post 으아악

이 기능은 여러 작업을 수행합니다. WordPress 및 기타 플러그인은

작업을 매우 자주 호출할 수 있기 때문입니다(예: 정기적인 간격으로 초안을 자동으로 저장하거나 다양한 게시물 유형을 저장할 때). 사용자 정의 필드 데이터는 사용자가 연락처를 저장하거나 업데이트할 때만 저장되도록 해야 합니다.

연락처를 저장하려면 이메일 주소를 정리합니다. WordPress Codex에서:

잘못된 UTF-8을 확인하고, 단일

간단히 말하면, 텍스트 문자열에 이상한 형식이 없는지 확인합니다. update_post_meta 将电子邮件地址存储在帖子元数据中。将帖子元视为附加到帖子的一系列键/值对。您可以根据自己的喜好选择任意数量。在我们的示例中,我们根据键 _contact_email

마지막으로

를 사용하여 사용자 정의 필드의 값을 저장합니다.

사용자 정의 필드 데이터 읽기

연락처

를 만들고 이메일 주소를 입력하세요. 새 연락처를 저장하면 해당 필드에 이메일 주소가 표시되지 않는 것을 확인할 수 있습니다. WordPress에서 간단한 CRM 만들기: 사용자 정의 필드 만들기

output_meta_box() 函数来读取 Post 元,并将其显示在输入字段中。将 output_meta_box()

함수를 다음 코드로 편집해야 합니다. get_post_meta() 来获取给定帖子 ID 和元键组合的值。我们知道元键是 _contact_email,因为这就是我们在 update_post_meta() 으아악

우리는 🎜🎜을 사용합니다 中保存自定义字段值时使用的键

安全

提交和处理表单数据时,安全性极其重要。我们在保存数据时需要知道数据的来源是可信的。如果我们不能信任数据的来源,我们就不能存储它——数据可能会因试图利用错误或安全缺陷而受到损害或损坏。

WordPress 为我们提供了随机数(“使用一次的数字”),可以与表单数据一起发送。当我们的保存例程运行时,可以检查这个随机数,以确保它与我们期望的值匹配。

这有助于防止跨站点请求伪造 (CSRF) 攻击,即有人试图从不同的网站向我们的保存例程提交表单数据。

我们需要在上面的代码的两个地方添加安全性:

  1. output_meta_box():向表单添加随机数
  2. save_meta_boxes():验证提交的随机数值

让我们编辑 output_meta_box() 函数,将其替换为以下代码:

/**
* Output a Contact Details meta box
*
* @param WP_Post $post WordPress Post object
*/
function output_meta_box($post) {

    $email = get_post_meta( $post->ID, '_contact_email', true );
	
	// Add a nonce field so we can check for it later.
	wp_nonce_field( 'save_contact', 'contacts_nonce' );
	
	// Output label and field
	echo ( '<label for="contact_email">' . __( 'Email Address', 'tuts-crm' ) . '</label>' );
	echo ( '<input type="text" name="contact_email" id="contact_email" value="' . esc_attr( $email ) . '" />' );
    
}

这使用 wp_nonce_field() 生成一个名为 contacts_nonce 的隐藏字段,并执行名为 save_contact 的操作。它的价值是由WordPress产生的。

接下来,让我们在 save_meta_boxes() 中编辑保存例程:

/**
* Saves the meta box field data
*
* @param int $post_id Post ID
*/
function save_meta_boxes( $post_id ) {

	// Check if our nonce is set.
	if ( ! isset( $_POST['contacts_nonce'] ) ) {
		return $post_id;	
	}

	// Verify that the nonce is valid.
	if ( ! wp_verify_nonce( $_POST['contacts_nonce'], 'save_contact' ) ) {
		return $post_id;
	}

	// Check this is the Contact Custom Post Type
	if ( 'contact' != $_POST['post_type'] ) {
		return $post_id;
	}

	// Check the logged in user has permission to edit this post
	if ( ! current_user_can( 'edit_post', $post_id ) ) {
		return $post_id;
	}

	// OK to save meta data
	$email = sanitize_text_field( $_POST['contact_email'] );
	update_post_meta( $post_id, '_contact_email', $email );
    
}

这为我们的保存例程添加了两项检查:

  1. 检查我们的表单中是否设置了随机数字段。如果没有,请不要保存任何内容。
  2. 检查随机数字段的值是否符合我们的预期。如果没有,请不要保存任何内容。

创建或编辑您的联系人,并确保电子邮件地址现已保存。

下一个...

在下一篇文章中,我们将使用高级自定义字段将自定义字段添加到我们的联系人自定义帖子类型中,从而使我们能够创建具有更广泛输入类型的丰富用户界面.

위 내용은 WordPress에서 간단한 CRM 만들기: 사용자 정의 필드 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.