为类中的特定帖子类型包装元框和数据处理?

时间:2011-12-23 作者:TheDeadMedic

我有一个网站,有一些自定义帖子类型,每个都有自己的自定义数据、元框和;资源(样式表、图像、JavaScript)。

通常我会add_meta_boxes 注册我的所有元框和save_post 来处理数据,但在这种情况下,我想将每个帖子类型的所有功能包装在一个类&;抽象出实例化过程。

我的建议如下:;

function my_prefix_admin_load_post()
{
    /* Grab current post type - can\'t use global $post_type since it isn\'t set yet! */
    if ( isset( $_GET[\'post\'] ) )
        $post_type = get_post_type( $_GET[\'post\'] );
    elseif ( isset( $_REQUEST[\'post_type\'] ) )
        $post_type = basename( $_REQUEST[\'post_type\'] );
    else
        $post_type = \'post\';

    /* Construct classname & filename from post type. */
    $post_type_file = dirname( __FILE__ ) . "/inc/class-post-$post_type.php";
    $post_type_class = \'Class_Prefix_\' . ucfirst( $post_type );

    if ( is_file( $post_type_file ) )
        require $post_type_file;

    if ( class_exists( $post_type_class ) )
        new $post_type_class;
}
add_action( \'load-post.php\', \'my_prefix_admin_load_post\' );
add_action( \'lost-post-new.php\', \'my_prefix_admin_load_post\' );
这样,我可以随时为新的或现有的帖子类型添加增强功能(无需修改基本函数),也无需为不同的帖子类型编写代码。

However, 我忍不住觉得加载过程有点。。。恶心。I\'d really love to hear of suggestions, whether improvements or alternate approaches!

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

这并不是一个完整的答案,但由于这个问题已经成为一个鬼城,我认为值得补充一下。

$post_type = get_current_screen()->id; // when on post.php or post-new.php
这已经有一段时间了,但是有了3.3much improved screen API 我可以看到这打开了一个更简单、按需加载的新世界。

结束

相关推荐

从Metabox保存数据不起作用

我已经使用了添加metabox的教程。但我的数据不会保存在框中。我在编辑链接页面中有元框,但当我将任何数据放入框中并按下更新按钮时,它不会保存数据。那么实际上,我想知道我什么时候把数据放进框中,我可以使用$\\u POST[]获取数据吗?如果是,请帮助我,使我的代码部分出错。。// backwards compatible add_action( \'admin_init\', \'blc_add_custom_link_box\', 1 ); /*