web-dev-qa-db-ja.com

キー_wp_page_templateはどこに渡されますか?

カスタム投稿メタボックスを追加するとき、私はあなたが入れたどんな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テーブルにも表示される方法です。

誰かが私がこれを説明するのを手伝ってくれる?

前もって感謝します。

1
Bobby

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);
}
1
fuxia

あなたが考えるように思われるようにフォームからデータを保存することは自動的ではありません...

カスタム投稿メタボックスを追加するとき、名前属性の入力を入力すると、フォームを介してサーバーに渡されることを理解しています。したがって、<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_postwp-includes/post.php関数によって処理されます。

0
s_ha_dum