WordPressのカスタムメタボックスについて
前回の投稿では、WordPressのカスタムフィールドについて説明しました。これにより、WordPressが投稿編集画面で提供するカスタムフィールドボックスを使用して、投稿に新しいエントリを追加して出力できます。ただし、カスタムフィールドボックスを使用するのに慣れていない場合(私たち全員が個別の設定を持っています)、これに代わる方法があります。メタボックスを作成できます。.
メタボックスは カスタマイズボックス 私たちが自分で創り出すこと 新しいエントリを追加するための入力または他の対話型UIを含む 投稿やページの数。カスタムフィールドボックスの代わりにメタボックスを使用して同じことを実行できます。作成方法を見てみましょう.
Hongkiat.comに関するその他の情報:
- WordPressでメディアアップロードディレクトリをカスタマイズする
- WordPressのエディタスタイルをカスタマイズする
- カスタマイズ “ハウディ” WordPressの管理バー
- WordPressユーザー用のカスタム分類法を登録する
- WordPressメニューにアイコンを表示する
メタボックスを作成する
WordPressは以下のAPI関数を用意しています add_meta_box
, これでメタボックスをすぐに作成できます。これはその最も基本的な形式です.
function add_post_reference()add_meta_box( 'post-reference'、 'Reference'、 'referenceCallBack'、 'post'); add_action( 'add_meta_boxes'、 'add_post_reference'); function referenceCallBack()echo 'Hello World'
の add_meta_box
ID、メタボックスのタイトル、 'Hello World'を呼び出すコールバック関数、そして表示したい投稿タイプの4つのパラメータを取ります。この場合、編集後のページに新しいメタボックスを割り当てます(これはページでも機能します)。.
投稿編集セクションには、次のように新しいボックスがあります。.
上記のとおり、新しいメタボックスはWYSIWYGエディタの下に表示されます。サイドバーに追加したい場合はpostパラメーターの後に 'side'を追加し、サイドバーの一番上に配置したい場合は 'high'を追加します。.
function add_post_reference()add_meta_box( 'post-reference'、 'Reference'、 'referenceCallBack'、 'post'、 'side'、 'high'); add_action( 'add_meta_boxes'、 'add_post_reference');
あなたは今それを上に見つけるでしょう 公開する ボックス…
ここで「Hello World」というテキストを置き換えます。新しいエントリに入力フィールドのような要素を追加しましょう.
この例では、2つの入力フィールドを追加します。1つは参照名を追加するためのもの、もう1つは参照リンクを追加するためのものです。
function referenceCallBack($ post)wp_nonce_field( 'reference_meta_box'、 'reference_nonce'); $ name_value = get_post_meta($ post-> ID、 '_ post_reference_name'、true); $ link_value = get_post_meta($ post-> ID、 '_ post_reference_link'、true);エコー '';エコー '';エコー ''。 => '参照の名前を追加してください。'
';エコー '';エコー '';エコー ''。 '参照のリンクを追加する'。
';
投稿編集ページを更新すると、これら2つの入力が追加されているはずです。.
の $ name_value
そして $ link_value
variableはデータベースからエントリを取得し、それらを入力フィールドに入力します。データベースにエントリを取得するには、そのための関数を作成する必要があります。.
これらの入力を通じて追加されたエントリを安全にデータベースに追加する数行のコードを追加する必要があります。. “安全に” ここでは、合法的で許可されたエントリー(ハッカーやその他の許可されていない人員によるものではありません)を意味します。エントリを保存するには、新しい関数を作成する必要があります。関数に名前を付けましょう: save_post_reference
, そのようです.
関数save_post_reference($ post_id) add_action( 'save_post'、 'save_post_reference');
前述したように、セキュリティ上の理由から、いくつかの点を検証する必要があります。
(1) ユーザーかどうかを確認する必要があります 投稿を編集する機能があります.
if(!current_user_can( 'edit_post'、$ post_id))return;
(2) 我々もする必要があります Nonceが設定されているか確認する.
if(!isset($ _POST ['reference_nonce'])))return; if(!wp_verify_nonce($ _POST ['reference_nonce']、 'reference_meta_box')))return;
(3) その後、データが自動保存されないようにする必要があります。保存は1回しか実行できません。 “保存する” または “更新” ボタンがクリックされました.
if(defined( 'DOING_AUTOSAVE')&& DOING_AUTOSAVE)return;
(4) 私達はまた私達の2つの入力を確実にしなければならないでしょう, post_reference_name
そして post_reference_link
, エントリを送信する前に設定され準備ができている.
if(!isset($ _POST ['post_reference_name'])||!isset($ _POST ['post_reference_link']))return;
(5) そしてエントリはウェブサイトのセキュリティを危うくするかもしれないどんな予期しない文字からも自由であるべきです。これを確認するには、WordPressの組み込み関数を使用できます。 sanitize_text_field
.
$ reference_name = sanitize_text_field($ _POST ['post_reference_name']); $ reference_link = sanitize_text_field($ _POST ['post_reference_link']);
これで、エントリをデータベースに保存する準備が整いました。
update_post_meta($ post_id、 '_ post_reference_name'、$ reference_name); update_post_meta($ post_id、 '_ post_reference_link'、$ reference_link);
試してみることができます。入力フィールドにコンテンツを入力して、 “更新” それらを保存するためのボタン.
結論
2つの入力からなるメタボックスを作成しました。ラジオボタンや選択ボックスなど、他の種類の入力でボックスをさらに拡張することができます。この例は非常に基本的なものかもしれませんが、一度慣れれば、もっと複雑な用途にこのメタボックスを使うことができます。あなたがこれを使うのかどうか、そして何のために使うのか教えてください。.