単に完全なメタ ボックスを作成する方法



x 【 】 https://youtube.com/watch?v=8TALeFgUfNA 【 】 ワードプレスのカスタム フィールド機能、ユーザー投稿型に簡単にデータを追加します。カスタム フィールドを使用して、我々 は行うことができますのみ 1 つキー (キー) の名前を選択し、非常に不便なので、値を入力することです。
右ここ確かにみんなは Yoast、によって SEO のプラグインを知っているか。この plugn ユーザーの SEO に関連するデータは、以下の通りラケットを宣言します。

またワードプレスのカスタム フィールドにあるデータは、ユーザーがより便利な情報を簡単に報告を助けます。このフレームのものはメタ ボックスと呼ばれます。
コードが気に入らない場合、プラグイン カスタム フィールドの高度な作成に役立つメタ ボックス簡単に。
メタボックス?
メタボックスは入力ボックスがコンテンツ エディター領域に統合されたデータは、ウェブサイトのデータベースに送信されますを意味します。現在、メタボックスがメタ データ (wp_usermeta、wp_commentmeta、wp_postmeta を含む) で動作するアプリケーションのほとんど。
この記事でお見せポストを処理するメタ ボックスを作成する方法メタ データ (ユーザー設定フィールドのデータ)。カスタム フィールドの追加または編集の値の種類。





プレビューする必要があります: 【 】 【 】 カスタムの記事ワードプレス フィールド
アクション & アンプ; を使用へのガイドフィルター フック 【 】 【 】 メタ ボックスの作成手順
新しいプラグインの作成を準備する
この記事で練習するより良いする必要があります手動で作成する新しいプラグイン/wp-コンテンツ/プラグイン/フォルダーのデモ metabox.php ファイルを作成することにより、プラグインの情報を宣言します。


& lt;?PHP 【 】 【 】/* プラグイン名: たとえばメタボックス 【 】 著者: Wp2Android のブログ 【 】 説明: 作成ガイド メタ ボックス 【 】 著者 URI: http://thachpham.com 【 】 */【 】 【 】 【 】 とを覚えて、このプラグインを有効に。
ステップ 1。宣言前のエディターの領域でメタ ボックス フレームを作りますメタ ボックス
この手順。作成するメタ ボックス フレーム、我々 使用します関数 add_meta_box ワードプレスの次の構造体を持つ: 【 】 add_meta_box ($id、$title、$callback、$screen、$context、$priority、$callback _ args);
: 【 】 【 】 $id: フレームの名前の ID。
$title: メタ フレーム表示ボックスのタイトル。
$callback: 関数データで動作するように HTML のフォームを表示します。
$screen: 名ポスト型がメタ ボックスが表示されること、それは投稿、ページ、添付ファイル、リンク、またはダッシュ ボードの名前カスタム投稿タイプ (スラグの形で書かれている名前に注意してください) の値を格納します。
$context: 高度な通常を含むメタ ボックスを表示または側します。
$priority: 優先順位表示高を含む、コア、既定または低の順序。
$callback _ 引数: コールバック パラメーター関数を返す。

作業する場合、我々 がない重要なパラメーター (最初パラメーターを 5 またはそれ以下) のみを使用してこの関数のほとんどのパラメーターを使用する必要があります。
必要があるが、add_meta_box () 関数が、独自の関数にそれを置く必要があること自体を呼び出すことはできませんに注意してください、アクション フックに引っ掛けては add_meta_boxes を実行します。
この資料の例では、私はボックスを作成メタ フレーム連絡先の名前の通り: 【 】 【 】/【 】 メタ ボックスを宣言 【 】 * */【 】 機能 thachpham_meta_box () [] {
add_meta_box (' ひものニュース '、'アプリケーション'、'thachpham_thongtin_output'、'ポスト');
}
add_action ('add_meta_boxes', 'thachpham_meta_box');

それは、【 】 【 】 ひもニュース: $id は。
アプリケーション情報: $title です。
thachpham_thongtin_output: $callback です。
ポストは $screen。

今の投稿コーナーへ行くし、ポストの追加/編集メタ ボックスが表示されます。
Add_meta_box 関数
エラー (call_user_func) を参照してください場合それを意味するそれは欠けているそれを見つける必要があります、コールバック関数を記述する我々 はここへはまだ我々 が持つメタ ボックスを表示します。
ステップ 2。関数を設定するコールバック
コールバック手段それは、ボックス内のコンテンツを表示する、単純な例についてこのようなテキストのスニペットを表示します。

関数 thachpham_thongtin_output () 【 】 {【 】 【 】 echo 'これはメタ ボックス内の情報は';
}

もちろん、結果今このようになります。

たとえばこの記事で私が作成されます 2 つのカード & lt; 入力 & gt;中に 1 つの入力に、たとえばたい (ユーザー設定フィールドを使用して) ダウンロード リンクを入力するデータ入力フィールドを作成し、私は次のように書き換える: 【 】 【 】/【 】 投稿情報を受け取るコールバック
$post @param WP_Post オブジェクトを宣言 【 】 * */【 】 thachpham_thongtin_output ($post) を機能 【 】 {【 】//Create リンク ダウンロード フィールド
エコー (' & lt; ラベル = & quot; link_download & quot; & gt; のダウンロード リンク: & lt;/ラベル & gt; ');
エコー (' & lt; 入力 = & quot; テキスト & quot; quot; link_download & id = & quot; link_download & quot; 名前 = & quot; 値 = & quot; '。esc_attr ($link _ ダウンロード). '& quot;/& gt; ');
}

我々 が持っている結果: 【 】 & nbsp;
& nbsp;

前項には HTML コンテンツのみ、フォームを作成するが、あなたは自分を注意してください、それは我々 が表示されます何か変数 $link _ ダウンロード上記のそれをユーザーが入力した内容表示かどうかを宣言する必要があります。
しかし、問題は、今値を入力しようとすると、保存されません投稿を再度更新単に我々 がないまだセットアップ入力したデータを保存するために。
しかしにデータを保存する前に我々 はそれ用に作成しましたので、ダウンロード _ $link 変数を理解するシステムを宣言する thachpham_thongtin_output 関数にこの作品を書いた。

/【 】 投稿情報を受け取るコールバック
$post @param WP_Post オブジェクトを宣言 【 】 * */【 】 thachpham_thongtin_output ($post) を機能 【 】 {【 】 $link _ プレビュー = get_post_meta ($post - & gt; _ link_download ID '、真);
//Create リンク ダウンロード フィールド
エコー (' & lt; ラベル = & quot; link_download & quot; & gt;ダウンロード リンク: & lt;/ラベル & gt; ');
エコー (' & lt; 入力 = & quot; テキスト & quot; quot; link_download & id = & quot; link_download & quot; 名前 = & quot; 値 = & quot; '。esc_attr ($link _ ダウンロード). '& quot;/& gt; ');
}

それは、彼自身ガイドで説明した関数 get_post_meta 投稿カスタム フィールドです。
ステップ 3。データ セットアップ入力メタボックス 【 】 我々 はすでにメタ ボックス、データ入力フィールドと、フィールドに値がある場合の入力データが出力されますがあった。しかし、問題はそれが保存されていないデータベースに、インポートするとき、これを処理する関数と、この関数を作成するので今我々 がポストのデータ型を保存するときに実行するアクション save_post フックにフックします。

/
保存メタ データ ボックスを入力 【 】 @param post_id が現在の投稿の ID 【 】 * */【 】 thachpham_thongtin_save ($post _ id) を機能 【 】 {【 】 $link _ タグ = sanitize_text_field ($ _POST [' link_download ']);
update_post_meta ($post _ id、'_', _ $link link_download ダウンロード);
}
add_action ('save_post', 'thachpham_thongtin_save');

この関数は非常にシンプルな link_download 学校にきれいにデータが入力するまず第一にそれが ($ _POST [' link_download '] は tínhname、カード & lt; 入力 & gt; それに基づくフィールドから送信されたデータが取得されます)。きれいなここで意味するよう特殊文字 & lt; それは削除、;限られた SQL インジェクション ・ amp; ではまた、発生したエラーを避けるためにXSS。
次に、update_post_meta 関数は、変数 $link _ カスタム フィールド名に上記のダウンロードのデータを保存は、_ link_download です。ない場合、それが新規作成されます。
今、あなたのコンテンツにデータを入力し、それを保存しようとすると、保存されているが表示されます。

& nbsp;
全体のコード セクション 【 】 【 】 & lt;?PHP 【 】 【 】/* プラグイン名: たとえばメタボックス 【 】 著者: Wp2Android ブログ 【 ・ 】 説明: 作成ガイド メタ ボックス 【 】 著者 URI: http://thachpham.com 【 】 */【 】 【 】/【 】 メタボックスを宣言 【 】 * */【 】 関数 thachpham_meta_box () [] {
add_meta_box (' ひものニュース '、'アプリケーション'、'thachpham_thongtin_output'、'ポスト');
}
add_action ('add_meta_boxes', 'thachpham_meta_box');

/【 】 投稿情報を受け取るコールバック
$post @param WP_Post オブジェクトを宣言 【 】 * */【 】 thachpham_thongtin_output ($post) を機能 【 】 {【 】 $link _ プレビュー = get_post_meta ($post - & gt; _ link_download ID '、真);
//Create リンク ダウンロード フィールド
エコー (' & lt; ラベル = & quot; link_download & quot; & gt;ダウンロード リンク: & lt;/ラベル & gt; ');
エコー (' & lt; 入力 = & quot; テキスト & quot; quot; link_download & id = & quot; link_download & quot; 名前 = & quot; 値 = & quot; '。esc_attr ($link _ ダウンロード). '& quot;/& gt; ');
}

/
保存メタ データ ボックスを入力 【 】 @param post_id が現在の投稿の ID 【 】 * */【 】 thachpham_thongtin_save ($post _ id) を機能 【 】 {【 】 $link _ タグ = sanitize_text_field ($ _POST [' link_download ']);
update_post_meta ($post _ id、'_', _ $link link_download ダウンロード);
}
add_action ('save_post', 'thachpham_thongtin_save');

ステップ 4。テンプレートをデータを取得 【 】 テンプレート テーマからショーはちょうど世間話し、カスタム フィールドの値を設定する、もちろん、だけでそれを行う get_post_meta 機能フィールド _ link_download の値を取得する次のように。
get_post_meta ($post - & gt; _ link_download ID '、真);
セキュリティの問題 [・] の際に送信に連携してセキュリティ上の問題は非常に重要なフォームのデータを保存しにデータを格納するかどうかを確認するので、データベースに保存それがデータを保存することによって、注目に値する、信頼性の高い。
メタでの作業時に使用する必要があります関数 sanitize_text_field を使いましたが、もっと esc_attr、1 つ投稿すると特殊文字のエスケープに加えボックス、Nonce (1 回使用する番号) を使用します。
ここで理解する認証コード (番号) 付きのチェーンは、我々 はフォームにデータを送信するたびに一回だけ。はい、我々 は保存それを聞かせする場合は、この一回だけそれが有効かどうか、かどうか我々 確認できますし、データ、いない場合は、それはそれを聞かせする必要があります。これは XSS もしくは CSRF のようないくつかの攻撃を戦うを助けます。
ステップ 1。Nonce を作成
コールバック関数に戻って米国では、ここでの thachpham_thongtin_output は、今我々 wp_nonce_field 関数と nonce が作成され、名前とアクションを追加します。

thachpham_thongtin_output ($post) を機能 【 】 {【 】 $link _ プレビュー = get_post_meta ($post - & gt; _ link_download ID '、真);
wp_nonce_field ('save_thongtin', 'thongtin_nonce');
//Create リンク ダウンロード フィールド
エコー (' & lt; ラベル = & quot; link_download & quot; & gt;ダウンロード リンク: & lt;/ラベル & gt; ');
エコー (' & lt; 入力 = & quot; テキスト & quot; quot; link_download & id = & quot; link_download & quot; 名前 = & quot; 値 = & quot; '。esc_attr ($link _ ダウンロード). '& quot;/& gt; ');
}

特に、save_thongtin は後で調べるために使用するアクションの名前、thongtin_nonce は nonce を取得する nonce 値の名前。
内容を編集する HTML ソース ビューを追加した直後に名前 thongtin_nonce の非表示フィールドを作成、ページが表示されます、値が数値のシーケンス、その値を使用してデータを保存するときを確認します。

今、hàmthachpham_thongtin_save、我々 はちょうど nonce がまだ有効と無効の nonce 値以下のようではない場合、データは保存されません 2 つの複数分岐条件を必要します。

thachpham_thongtin_save ($post _ id) を機能 【 】 {【 】 【 】 $thongtin _ nonce = $ _POST [' thongtin_nonce '];
//check が場合は、nonce 値を割り当てられていない [] 場合 (! isset ($thongtin _ nonce)) {
値を返します。
}
//check 値、nonce と一致しない場合 【 】 場合 (! wp_verify_nonce ($thongtin _ nonce、' save_thongtin')) {
値を返します。
}

//Save データ場合、合意された条件
$link _ タグに sanitize_text_field を = ($ _POST [' link_download ']);
update_post_meta ($post _ id、'_', _ $link link_download ダウンロード);
}
add_action ('save_post', 'thachpham_thongtin_save');

ので大丈夫です。😀 【 】 結論 【 】 に、この記事では、単純な入力フィールドを作成する一時的に停止します。そしてあなたを案内するでしょうより多くの時間があるときは非常に長いと、ラジオボタン、ドロップ ダウン リストとしてフィールドの型を作成する方法より。
以前 seriePhần でより多くの記事を読む: 次回の記事で viếtPhần のデータ フィールド (カスタム フィールド) を追加: ウィジェットを作成するガイド 【 】 【 】 【 ・ 】 関連 【 】 【 】 【 】

Nhận xét