我认为答案是,没有简单的方法可以实现你想要的,因为没有人会想要这种行为。由于各种原因,自定义/元字段被添加到帖子中,插件一直在存储你永远不想让公众看到的东西,因为它可能是私有的,也可能是超级无聊和/或难以理解的。
自定义字段需要手动添加到主题中,原因是:只有您特别选择的字段才有意义。
请记住,您只需在设置站点时执行所有这些操作。网站上线后,您可能不会经常(或者至少不应该)向主题添加自定义字段。
也就是说,有一些方法可以通过编写一些PHP代码来减轻自己的负担,这些代码可以半自动化处理过程。如果您已经在PHP中定义了字段,那么这将特别有用,在这种情况下,您可以将metabox定义混合在一起(使用类似http://wordpress.org/extend/plugins/custom-metadata/ ) 以及要在选项卡中显示的字段列表。
例如,可以创建$fields_to_show_in_tabs
, 使用所有不同选项卡的标签、postmeta名称和field\\u类型,您可以遍历该数组并使用自定义元数据管理器注册每个自定义字段。然后可以引用相同的数组(最好将其放在全局变量中:global $fields_to_show_in_tabs
) 在你的主题中foreach ($fields_to_show_in_tabs)
在其中循环遍历数组并将每个数组显示为选项卡。
如果我有一个很长的字段列表,这些字段可能会发生很大变化,那么我会这么做。老实说,这可能有点过头了。如果我是你,我只会在开发期间更新主题,并告诉客户他们需要你的帮助来添加任何新选项卡。这是完全合理的,可以保护他们免受许多可能发生的噩梦的影响,因为他们创造了你从未想过的奇怪的新领域。
还有一件事:在您的示例中,无论Posteta是否存在,您都将显示选项卡和选项卡内容。这意味着如果没有填写内容,可能会有一个空选项卡。如果您不希望出现这种行为,您可能应该首先检查是否使用以下方法设置了Posteta:
<?php if (get_post_meta($post->ID, \'profile\', true)): ?>
<li><a href="#tabs-1">Profile</a></li>
<?php endif;?>
div标记也是如此。这也是一个很好的论点,有利于创建一个函数来循环遍历字段数组并显示它们,这样您只需要一个HTML和PHP检查副本,它就可以为您处理各种字段。