我已经为实现“相关文章”功能奋斗了几天,不幸的是PHP/WordPress不是我的强项。
目前,我在我的前端上击中了这个端点:
posts?slug=${slug}&orderby=date&order=desc&categories=4&acf_format=standard
这将返回主Post对象,其中包含我所期望的内容,例如slug、status、sticky等。在这个对象中是acf对象,在这里我可以看到我的related_posts数组。我的问题来自于这样一个事实,即这些Post对象是用完全不同的字段表示的,大多数前缀是单词“post_”。
我在acf-to-rest-api插件上发现了this Github issue,它和我面临的问题几乎一样(我甚至偷了他们的问题标题!),然而到目前为止还无法实现它,而且它也是从2017年开始的,所以我不确定什么是过时的。
有办法返回正常的WP Post JSON格式吗?
1条答案
按热度按时间sd2nnvve1#
一种可能的方法是使用
add_filter()
function添加filter to your Wordpress's themefunction.php
。在您的示例中,您可以检查ACF响应中是否存在
related_posts
字段。如果是,过滤器会将
related_posts
数组Map到相应的WP Post JSON格式,并替换响应中的原始related_posts
字段。确保调整字段名称和附加字段(例如例如,
yoast_head
,如果您使用的是Yoast SEO plugin)根据您的设置。您可能还需要flush WordPress caching plugins来测试该过滤器。
OP J. Jackson在评论中补充道:
我在ACF中使用标签选择,而不是WordPress的标签。
我该如何使用这些填充标签数组?
这意味着您需要使用ACF标记填充
Tags
数组,方法是获取ACF标记字段值并将其包含在$post_json
数组的tags键中。我假设标签的ACF字段名是
custom_tags
,但如果不同,请将'custom_tags
'替换为ACF标签字段的实际字段名。