検索
ホームページウェブフロントエンドhtmlチュートリアルWordPress でシンプルな CRM を作成する: カスタムフィールドを作成する

このシリーズでは、WordPress でシンプルな CRM システムを作成する方法を検討してきました。このシリーズの最初の部分では、「連絡先」カスタム投稿タイプを登録する WordPress プラグインを作成しましたが、連絡先の追加情報を保存する方法については説明していませんでした。

カスタムフィールドの作成

WordPress には、プラグインやテーマの開発者がさまざまな WordPress 管理画面にカスタム メタ ボックスを登録できるようにする add_meta_box() 関数があります。

WordPress は、投稿またはページを作成するときに表示する独自のメタ ボックスをいくつか登録します。たとえば、ページには Page PropertiesMeta Box:

があります。

WordPress でシンプルな CRM を作成する: カスタムフィールドを作成する

メタ ボックスを 連絡先 カスタム投稿タイプに追加しましょう。このシリーズの最初のチュートリアルで作成したプラグイン ファイルを開きます。次に、プラグインのコンストラクターで、次と一致するようにコードを更新します。これにより、register_meta_boxes() 関数が add_meta_boxes に登録されます。アクション:

リーリー

次に、register_meta_boxes() 関数内に、add_meta_box() への呼び出しを追加します。これにより、output_meta_box() 関数によってレンダリングされる、ContactDetails という名前のメタ ボックスが必要であることが WordPress に伝えられます。コンストラクターの後に次のコードを追加します:

リーリー

最後に、output_meta_box() 関数が必要です。これは、上記の add_meta_box によって呼び出されます。 register_meta_boxes() 関数の後に次のコードを追加します:

リーリー

連絡先 カスタム投稿タイプにメタ ボックスが表示されるかどうかを確認してみましょう。 連絡先 > 新しい連絡先の追加

に移動して、WordPress ダッシュボードで新しい連絡先を作成します。

すべてが正しく記述されている場合は、次のスクリーンショットのようなものが表示されるはずです。

WordPress でシンプルな CRM を作成する: カスタムフィールドを作成する

フィールドを使用してメタボックスに入力します

先に進み、このメタ ボックスに電子メール アドレス フィールドを追加しましょう。 output_meta_box 関数を次のコードに変更します:

リーリー

プラグイン コードを保存し、連絡先の追加画面をリロードします。新しい電子メール アドレス フィールドが [連絡先の詳細] メタ ボックスに表示されるはずです:

WordPress でシンプルな CRM を作成する: カスタムフィールドを作成する

カスタムフィールドデータを保存する

まだ終わっていません。ユーザーがフィールドに入力した内容を保存するように WordPress に指示する必要があります。 WordPress では、save_post アクションの関数を登録することでこれを行います。

ほとんどの操作と同様に、操作をプラグインのコンストラクターに登録します。

リーリー

次に、save_meta_boxes() 関数を作成しましょう:

リーリー

WordPress やその他のプラグインは save_post アクションを頻繁に呼び出すことができるため、この関数は複数のアクションを実行します (定期的に下書きを自動的に保存するときや、別の投稿タイプを保存するときなど)。ユーザーが連絡先を保存または更新するときにのみカスタム フィールド データが保存されるようにする必要があります。

連絡先を保存する場合は、電子メール アドレスをクリーンアップします。 WordPress コーデックスより:

無効な UTF-8 をチェックし、単一の

つまり、テキスト文字列におかしな書式設定が存在しないことを保証します。

最後に、update_post_meta を使用して、メール アドレスを投稿メタデータに保存します。投稿メタは、投稿に添付された一連のキーと値のペアであると考えてください。好きなだけ選択できます。この例では、キー _contact_email に基づいてカスタム フィールドの値を保存します。

カスタムフィールドデータの読み取り

新しい 連絡先を作成し、電子メール アドレスを入力します。新しい連絡先を保存すると、電子メール アドレスがフィールドに表示されないことがわかります:

WordPress でシンプルな CRM を作成する: カスタムフィールドを作成する

Post メタを読み取り、入力フィールドに表示するには、output_meta_box() 関数を編集する必要があります。 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 中国語 Web サイトの他の関連記事を参照してください。

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

HTMLは、Webページを構築するために使用される言語であり、タグと属性を使用してWebページの構造とコンテンツを定義します。 1)htmlは、などのタグを介してドキュメント構造を整理します。 2)ブラウザはHTMLを分析してDOMを構築し、Webページをレンダリングします。 3)マルチメディア関数を強化するなど、HTML5の新機能。 4)一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれます。 5)最適化の提案には、セマンティックタグの使用とファイルサイズの削減が含まれます。

HTML、CSS、およびJavaScriptの理解:初心者向けガイドHTML、CSS、およびJavaScriptの理解:初心者向けガイドApr 12, 2025 am 12:02 AM

webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

HTMLの役割:Webコンテンツの構造HTMLの役割:Webコンテンツの構造Apr 11, 2025 am 12:12 AM

HTMLの役割は、タグと属性を使用してWebページの構造とコンテンツを定義することです。 1。HTMLは、読みやすく理解しやすいようなタグを介してコンテンツを整理します。 2。アクセシビリティとSEOを強化するには、セマンティックタグなどを使用します。 3. HTMLコードの最適化により、Webページの読み込み速度とユーザーエクスペリエンスが向上する可能性があります。

HTMLとコード:用語を詳しく見るHTMLとコード:用語を詳しく見るApr 10, 2025 am 09:28 AM

htmlisaspecifictypeofcodefocuseduructuringwebcontent

HTML、CSS、およびJavaScript:Web開発者に不可欠なツールHTML、CSS、およびJavaScript:Web開発者に不可欠なツールApr 09, 2025 am 12:12 AM

HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。

HTML、CSS、およびJavaScriptの役割:コアの責任HTML、CSS、およびJavaScriptの役割:コアの責任Apr 08, 2025 pm 07:05 PM

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

HTMLは初心者のために簡単に学ぶことができますか?HTMLは初心者のために簡単に学ぶことができますか?Apr 07, 2025 am 12:11 AM

HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用​​できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

HTMLでの開始タグの例は何ですか?HTMLでの開始タグの例は何ですか?Apr 06, 2025 am 12:04 AM

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1

メモ帳++7.3.1

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

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター