이 시리즈에서는 WordPress에서 간단한 CRM 시스템을 만드는 방법을 살펴보았습니다. 이 시리즈의 첫 번째 부분에서는 "연락처" 사용자 정의 게시물 유형을 등록하는 WordPress 플러그인을 만들었지만 연락처에 대한 추가 정보를 저장하는 방법은 다루지 않았습니다.
WordPress에는 플러그인 및 테마 개발자가 다양한 WordPress 관리 화면에 대한 사용자 정의 메타 상자를 등록할 수 있는 add_meta_box()
기능이 있습니다.
WordPress는 게시물이나 페이지를 만들 때 표시할 자체 메타 상자 중 일부를 등록합니다. 예를 들어, 페이지에 페이지 속성메타 상자:
이 있습니다. 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()
함수에 의해 렌더링되는
라는 메타 상자가 필요하다는 것을 WordPress에 알려줍니다. 생성자 뒤에 다음 코드를 추가합니다. output_meta_box()
函数,该函数是由上面的add_meta_box
调用的。在register_meta_boxes()
으아악
함수 뒤에 다음 코드를 추가해야 합니다. 으아악 연락처 사용자 정의 게시물 유형에 메타 상자가 나타나는지 확인해 보겠습니다.
연락처 > 새 연락처 추가로 이동하여 WordPress 대시보드에 새 연락처를 만듭니다.모든 내용이 올바르게 작성되면 아래 스크린샷과 비슷한 내용이 표시됩니다.
메타 상자를 필드로 채우기output_meta_box
함수를 다음 코드로 변경합니다.
으아악플러그인 코드를 저장하고 연락처 추가 화면을 다시 로드하세요. 연락처 세부 정보 메타 상자에 새 이메일 주소 필드가 표시됩니다.
사용자 정의 필드 데이터 저장save_post
작업에 대한 함수를 등록하여 이를 수행합니다.
대부분의 작업과 마찬가지로 플러그인 생성자에 작업을 등록합니다. save_meta_boxes()
으아악
함수를 만들어 보겠습니다. save_post
으아악
작업을 매우 자주 호출할 수 있기 때문입니다(예: 정기적인 간격으로 초안을 자동으로 저장하거나 다양한 게시물 유형을 저장할 때). 사용자 정의 필드 데이터는 사용자가 연락처를 저장하거나 업데이트할 때만 저장되도록 해야 합니다.
연락처를 저장하려면 이메일 주소를 정리합니다. WordPress Codex에서:잘못된 UTF-8을 확인하고, 단일
간단히 말하면, 텍스트 문자열에 이상한 형식이 없는지 확인합니다. update_post_meta
将电子邮件地址存储在帖子元数据中。将帖子元视为附加到帖子的一系列键/值对。您可以根据自己的喜好选择任意数量。在我们的示例中,我们根据键 _contact_email
사용자 정의 필드 데이터 읽기 새
연락처를 만들고 이메일 주소를 입력하세요. 새 연락처를 저장하면 해당 필드에 이메일 주소가 표시되지 않는 것을 확인할 수 있습니다.
output_meta_box()
函数来读取 Post 元,并将其显示在输入字段中。将 output_meta_box()
함수를 다음 코드로 편집해야 합니다. get_post_meta()
来获取给定帖子 ID 和元键组合的值。我们知道元键是 _contact_email
,因为这就是我们在 update_post_meta()
으아악
提交和处理表单数据时,安全性极其重要。我们在保存数据时需要知道数据的来源是可信的。如果我们不能信任数据的来源,我们就不能存储它——数据可能会因试图利用错误或安全缺陷而受到损害或损坏。
WordPress 为我们提供了随机数(“使用一次的数字”),可以与表单数据一起发送。当我们的保存例程运行时,可以检查这个随机数,以确保它与我们期望的值匹配。
这有助于防止跨站点请求伪造 (CSRF) 攻击,即有人试图从不同的网站向我们的保存例程提交表单数据。
我们需要在上面的代码的两个地方添加安全性:
output_meta_box()
:向表单添加随机数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 ); }
这为我们的保存例程添加了两项检查:
创建或编辑您的联系人,并确保电子邮件地址现已保存。
在下一篇文章中,我们将使用高级自定义字段将自定义字段添加到我们的联系人自定义帖子类型中,从而使我们能够创建具有更广泛输入类型的丰富用户界面.
위 내용은 WordPress에서 간단한 CRM 만들기: 사용자 정의 필드 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!