你是如何处理管理区的后期工作的?

时间:2014-04-08 作者:JMau

我有很多技巧可以在管理区域为用户添加一些信息。为此,我使用WordPress API和元框。

好吧,这很酷,但如果我想显示用帖子设置的信息,比如我有一个元框,我想在帖子编辑中显示一些设置预览,该怎么办。

我无法使用global $post$post->ID 非常方便get_post_meta().

我的意思是这是一个相当大的负荷问题。此时,例如post-new.php 我们没有此信息,因为尚未设置WP\\u Post对象。

你是怎么做到的?

EDIT: 更确切地说,我正在尝试在管理区获得post meta。例如,我有一个代码,可以添加一个metabox,用户可以输入或选择一些内容。我想在同一个区域检索它。这样,用户可以查看其设置是否正确。

我并不反对AJAX,但我是那些首先考虑nojs的人之一,如果可能的话,或者如果这能给用户带来舒适的话,js作为附加层。

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

事实并非如此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框架,比如AngularEmber (和其他)能够实时进行UI绑定(根据用户输入自动更新视图),而无需“手动”实现ajax,但。。。它们是javascript。。。魔法不存在。

结束

相关推荐

Wp-admin上的自定义查询变量和解析请求

我读过这篇文章http://wordpress.org/support/topic/query-vars-in-admin虽然这是一个很老的问题,但它非常适合我。我正在努力完成我在这里发布的内容:Rewrite rule for admin-ajax.php但在下面的代码中,在wp admin中只调用第一个过滤器:add_action(\'init\', array(\'MYCLASS\', \'add_custom_rewrite_rules\'), 10, 1); add_action(\'q