Advanced Custom Fields是款非常强大实用的自定义字段插件,可以在文章、类别、标签、页面、自定义类型甚至用户里非常直观地添加 Text、Textarea、Image、Checkbox、File、Select等自定义字段,还可以同时控制这些字段所显示的位置以及一些判断条件。此插件可以集成到其它插件或者主题中,Kissneck使用的主题就集成这插件,主要还是用于文本字段,文件,图片,的存储。使用起来相当的方便,这里我贴上官方的链接https://www.advancedcustomfields.com/,大家有兴趣的可以去看看。
开始使用的时候都是在后台生成文章,生成项目需要的数据,对于客户在页面上的要求,比如,加个电话,加个图片,使用acf自定义插件,很快就可以在后台设置相应的功能。 后来,功能稍微复杂点的,比如,前台直接发表的会用复杂的数据,需要用到repeat字段的功能的时候,就会出现这样一个问题:新闻可以在页面提交数据存到数据库里,后台也可以看到新生成的一条数据。
像下面我截的图,是一个repeat字段,用来设置图片。但是这样生成的一新闻,没有在后台点‘更新‘,不管你发表的是不是已经发布 ‘post_stauts’ => ‘publish‘,还是别的什么状态,在新闻的详情页,都是不会显示该图片的。详情页的调用是这样的:$img = get_field(‘images‘ , $post->ID);
对于这样的问题有好几种解决方法;可以在业务逻辑上增加一审核的过程,说白点就是要管理员在后台更新这篇新闻,还有一种比较繁琐用到wp的get_post_meta函数。在这里我介绍下另外一种方法,特别好用,原理就是,在生成这个数据/新闻时在程序里更新下这篇新闻,意思上差不多,也是在google上找到的。废话不多说,直接上代码。
像这样就可以自己在详情页调用get_field保证数据是正确的。