
很多人学到主题配置和插件 Hook 以后,马上就会碰到一个更实用的问题:
怎么给文章、分类、标签这些对象,加上自己的字段?
比如:
这时候如果你还用“全局配置”的思路去处理,很快就会乱掉。
因为这类数据往往不是属于整个主题,而是属于某一个对象。
这就是 Metas 发挥作用的地方。
Config 和 Metas 不是一回事很多人第一次做自定义字段,最容易在这里混。
Config更适合放:
也就是:
全局都适用的值。
Metas更适合放:
也就是:
挂在单个对象上的值。
如果你把这两类东西混了,后面编辑体验会非常糟糕。
Metas只要需求符合下面任意一条,你都应该优先考虑 Metas:
例如:
这类数据都不应该做成主题 Config。
Metas 最常见的落地思路常见路径其实很清楚:
meta_<key> 的命名$object->Metas->key 读取也就是说,Metas 的关键不只是“存”,而是这条链路要完整。
如果你要给文章编辑页加一个字段,常见会从这些 Hook 里找落点:
Filter_Plugin_Edit_ResponseFilter_Plugin_Edit_Response2Filter_Plugin_Edit_Response3具体挂哪一个,取决于你想插到编辑页的什么位置。
你不需要一开始就死背顺序,先知道这类需求该往 Edit_Response 家族找就够了。
meta_<key>这是一个很实用的约定。
如果你要给文章加一个 SEO 标题字段,常见会写成:
<input type="text" name="meta_seotitle" value="" />
如果你要加封面图字段,可能是:
<input type="text" name="meta_cover" value="" />
这种命名方式的好处是:
$article->Metas->seotitle如果字段属于文章,就从文章对象上读:
$article->Metas->seotitle
如果字段属于分类,就从分类对象上读:
$category->Metas->seotitle
如果字段属于标签,就从标签对象上读:
$tag->Metas->intro_extra
这个思路非常直观:
Metas 里读这类需求特别适合拿来练手。
思路通常是这样的:
比如:
meta_seotitlemeta_seodescription也就是让内容编辑者在后台每篇文章里单独填。
header.php 读取例如先判断:
这就是一个非常标准的 Metas 使用场景。
很多人只想到文章字段,忽略了分类和标签。
但对于内容站来说,分类和标签页本身就经常需要更多信息。
比如你可能想给分类加:
这时就可以考虑:
Filter_Plugin_Category_Edit_ResponseFilter_Plugin_Tag_Edit_Response这两个入口很常用。
尤其做 SEO 站的时候,分类和标签字段的价值很高。
很多人第一次做编辑页字段,只盯着那个输入框本身。
其实完整度更重要。
至少要同时考虑:
如果这些没想清楚,就很容易出现:
Metas 和默认值怎么配合最稳这也是实际开发里很常见的需求。
比如文章封面图,很多时候不会要求每篇都填。
这时更稳的顺序通常是:
Metas 里有没有专属封面这个思路也适用于 SEO 标题、摘要描述之类的字段。
也就是说:
Metas 常常是优先值,不一定是唯一值。
Metas 的东西,硬做成全局配置后面每篇文章都得共享同一个值,很别扭。
这是最常见的问题之一。
Metas,但没有空值兜底一旦没填,页面结构就开始出问题。
后面排查和维护会很难受。
那它们的价值就打了折。
第一版先把字段链路跑通,比一开始做复杂后台体验更重要。
如果你第一次做 Metas,我建议按这个顺序练:
header.php 或列表页接入真实用途这样你会很快从“知道有 Metas”进入“真的会用 Metas”。
Metas 最有价值的地方,不是它名字特别,而是它把“对象自己的数据”这件事处理得很自然。
只要你先把这条边界守住:
ConfigMetas再把下面这条链路跑通:
后面你做文章 SEO、文章封面、分类介绍、标签扩展,都会顺很多。
下一篇我们继续攻最容易卡人的三块:路由、评论和 API。
发表评论: