在管理用户界面中使自定义字段成为标准

时间:2010-09-04 作者:Sampson

我添加了一些不同的custom_post_types 到我的Wordpress 3安装。它们彼此都有点不同,应该在custom_fields. 但是当你可以储存product_id, 另一个不会。一个会有一个source_url 而另一个不会。与其告诉我的编辑器哪些自定义字段应该与哪些自定义帖子一起使用,我如何让每个自定义帖子将其自定义字段作为UI本身的一部分?

如果您访问“daily\\u cartoon”,屏幕上只会显示标题、字幕和媒体
如果您访问“daily\\u product”,屏幕上只会显示标题、价格、摘要等信息。

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

你好@Jonathan Sampson:

several plugins to make Custom Post Types easier 还有一些允许您定义自定义字段,没有特定的顺序:

如上所述,我一直在开发一个不提供像这样的用户界面的API,而是为复杂字段类型(以及简单字段类型)提供可扩展的API但花了一个小时试着打包后,我意识到它还没有准备好分发。也许几周后吧。

上面列出的这些插件现在应该满足您的基本需求,我将尝试使我的插件与所有这些插件存储的数据兼容,以防您将来决定使用我的插件。

你可能也会发现这篇文章有点帮助:

SO网友:hannit cohen

您可以添加meta_框,以便将自定义字段数据存储在其中。自从add_meta_box 可以根据post\\u类型进行设置这将允许您向不同的post类型添加不同的meta\\u框。

看看这个post 有关更改自定义帖子类型新建/编辑屏幕的完整示例。

SO网友:jnolte

我最近需要在一个主题中解决一个非常类似的问题。代码的基础是post 我修改了一些代码

下面是我修改的代码的第一部分。

    add_action(\'init\', \'limited_post_type\');
function my_custom_limited_post_type() 
{
  $labels = array(
    \'name\' => _x(\'Limited Post Type\', \'post type general name\'),
    \'singular_name\' => _x(\'Film - DVD\', \'post type singular name\')
  );
  $args = array(
    \'labels\' => $labels,
    \'public\' => true,
    \'publicly_queryable\' => true,
    \'show_ui\' => true, 
    \'query_var\' => true,
    \'rewrite\' => true,
    \'capability_type\' => \'post\',
    \'hierarchical\' => false,
    \'menu_position\' => null,
    \'supports\' => array(\'title\',\'editor\',\'author\',\'thumbnail\',\'excerpt\', \'page-attributes\',\'custom-fields\' ),
    \'show_in_nav_menus\' => true
  ); 
  register_post_type(\'limited_post_type\', $args);
}
下面是我修改过的代码的第二部分。

foreach ( $scope as $scopeItem ) {
       switch ( $scopeItem ) {
           case "post": {
             // Output on any post screen
             if ( basename( $_SERVER[\'SCRIPT_FILENAME\'] )=="post-new.php" || $post->post_type=="post" )
             $output = true;
             break;}              
            case "page": {
                  // Output on any page screen
                  if ( basename( $_SERVER[\'SCRIPT_FILENAME\'] )=="page-new.php" || $post->post_type=="page" )
            $output = true;
            break;}
             case "limited_post_type": {
                                // Output on limited post_type onlye
            if ((basename( $_SERVER[\'SCRIPT_FILENAME\'] )=="post-new.php" && $post->post_type=="limited_post_type" ) || (basename( $_SERVER[\'SCRIPT_FILENAME\'] )=="post.php" && $post->post_type=="film_dvd" ))
                   $output = true;
                   break;
                  }
如果你愿意,请给我发个信息,我会很高兴地把我的功能发给你。php文件供您参考。这绝对是实现这一目标的方法,因为我像你一样经历了许多个夜晚的拉扯。

结束

相关推荐

WP-ADMIN似乎正在重定向

我的w-admin登录有一个奇怪的问题。这是从我升级到3.0以后才开始的,当我转到wp admin时,登录表单显示正常,但当我输入用户名并通过时,每次都会再次显示登录表单。使用密码恢复功能会导致电子邮件未找到错误。我知道用户名密码和电子邮件是正确的,b/c我可以访问mysql数据库,我可以看到值(至少用户名和电子邮件) 有人知道会出什么问题吗