カスタム投稿メタボックスを追加するとき、私はあなたが入れたどんなname
属性input
でもフォームを介してサーバに渡されることを理解しています。
したがって、私が持っているなら
<input type="text" name="my_custom_field" id="my_custom_field" />
使う
get_post_meta($post->ID, 'my_custom_field', true);
そのinput
の値は取得可能です。
これに関して、私はカスタムページテンプレートをターゲットにする方法についてグーグルをしました、そして、これは私が見つけたものでした。
global $post;
function func_name {
if ( 'foobar.php' == get_post_meta( $post->ID, '_wp_page_template', true ) ) {
do something...
}
}
add_action( 'add_meta_boxes_page', 'func_name' );
_wp_page_template
はどこから来たのですか?
[ページ属性]メタボックスのWPバックエンド編集ページを調べましたが、そのキー名を持つフィールドはありません。私を悩ませているのは、_wp_page_template
がデータベースのwp_postmetaテーブルにも表示される方法です。
誰かが私がこれを説明するのを手伝ってくれる?
前もって感謝します。
HTML属性name
はサーバーに送信されるものです。いくつかのPHPコードを読み取ってデータベース内の特定のキーと一緒に格納するコードがあります。
HTML名とデータベースキーは同じ文字列である必要はありません。 PHPコードは、まったく異なる名前を使用することも、1つの値を複数のデータベース値に分割することもできます。
テンプレート属性ハンドラーは次のことを行います。ページ属性metaboxからpage_template
という名前を取り、それを_wp_page_template
としてデータベースに保管します。先頭のアンダースコアは、 カスタムフィールド metaboxに表示されないようにそのフィールドを保護します。
wp_insert_post()
のこの部分を参照してください。
if ( !empty($page_template) && 'page' == $data['post_type'] ) {
$post->page_template = $page_template;
$page_templates = wp_get_theme()->get_page_templates();
if ( 'default' != $page_template && ! isset( $page_templates[ $page_template ] ) ) {
if ( $wp_error )
return new WP_Error('invalid_page_template', __('The page template is invalid.'));
else
return 0;
}
update_post_meta($post_ID, '_wp_page_template', $page_template);
}
あなたが考えるように思われるようにフォームからデータを保存することは自動的ではありません...
カスタム投稿メタボックスを追加するとき、名前属性の入力を入力すると、フォームを介してサーバーに渡されることを理解しています。したがって、
<input type="text" name="my_custom_field" id="my_custom_field" />
の場合、その入力の値を取得するためにget_post_meta($post->ID, 'my_custom_field', true);
を使用することが可能です。
はい。フォームデータはPOST
またはGET
データとしてサーバーに渡されますが、スクリプトによって意図的に処理されていない場合、そのデータには何も起こりません。これはデータベースに保存することを意味しますが、必ずしもそうとは限りません。連絡先フォームの一部として、代わりにデータを電子メールで送信することができます。
フォームが使用するname
属性は、データベースに保存されているキーと一致する必要はありません。フォームを処理するコードは、プログラマが望む任意のキーの下にそれを保存することができます。
あなたが話している特定のデータは wp_insert_post
のwp-includes/post.php
関数によって処理されます。