当添加自定义post meta框时,我理解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\\U POSTETA表中。
有人能帮我解释一下吗?
提前谢谢。
最合适的回答,由SO网友:fuxia 整理而成
HTML属性name
是发送到服务器的内容。有一些PHP代码读取它并使用特定的键将其存储在数据库中。
HTML名称和数据库键不必是相同的字符串。PHP代码可以使用完全不同的名称,也可以将一个值拆分为多个数据库值。
模板属性处理程序执行以下操作:它采用名称page_template
从页面属性metabox并将其存储为_wp_page_template
在数据库中。前导下划线可防止该字段显示在自定义字段元框中。
请参见中的此部分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);
}
SO网友:s_ha_dum
从表单保存数据并不像您认为的那样是自动的。。。
在添加自定义post meta框时,我知道您输入的任何名称属性都会通过表单传递到服务器。因此,如果<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
.