事实并非如此post-new.php
全球的$post
未定义,WordPress创建一篇文章并将其保存在数据库中,作为自动草稿使用get_default_post_to_edit
在输出页面和元框之前,您可以依赖全局post对象。
然而,我不喜欢使用全局post对象,也不喜欢在上面获取全新的帖子post-new.php
我使用transition post status, 类似(概念验证):
function new_post_info( $new = NULL, $old = NULL, $post = NULL ) {
static $info = NULL;
if ( $new === \'auto-draft\' && ! empty( $post ) ) {
$info = $post;
}
return $info;
}
add_action(\'transition_post_status\', \'new_post_info\', 999, 3 );
add_action( \'add_meta_boxes\', function() {
add_meta_box( \'test\', \'Test\', function() {
echo \'<pre>\';
print_r( new_post_info() );
echo \'</pre>\';
}, \'post\' );
});
通过这种方式,我可以在metabox中获得WordPress生成和保存的默认草稿的信息。
这就是说,如果您想向用户显示她正在做的事情的“实时预览”,那么除了使用javascript或重新加载整个页面之外,没有其他机会了,第一个更好,第二个只能用作禁用javascript的用户的后备。
那里有一些javascript框架,比如Angular 或Ember (和其他)能够实时进行UI绑定(根据用户输入自动更新视图),而无需“手动”实现ajax,但。。。它们是javascript。。。魔法不存在。