使用短代码遍历 WordPress 中的数组

Iterate through array in WordPress using shortcodes

虽然我知道如何编写基本的插件功能和创建短代码,但我对 WP 还很陌生。我想让我的插件 return 成为一个数组(用户收藏夹的列表),但是 HTML 在 post 中定义,而不是在短代码实现中。所以我想按照这些思路做一些事情:

[user_favorites_fetch]
<table>
   [foreach user_favorite]
     <tr>
       <td>[foreach_index]</td>
       <td><a href="[foreach_var user_favorite.url]">[foreach_var user_favorite.title]</a></td>
     <tr>
   [/foreach]
</table>

我知道如何将 HTML 嵌入到 user_favorites_fetch 的短代码定义中,但我宁愿使用 MVC 分离并将 HTML 保留在 post.我 认为 我可以在我的插件中实现 "foreach" 功能作为专门的 [user_favorite_foreach] 简码,但我宁愿使用 built-in "foreach" 类型函数,如果有的话。我已经搜索过,但到目前为止还没有找到任何东西,但也许我没有使用正确的关键字。

有built-in"foreach"这样的功能吗?

自从我发布这个问题后,我学到了很多关于短代码的知识。似乎没有内置的方法来执行此操作。我最终做的确实是写我自己的 "wrapper" 短代码来迭代,像这样:

<table>
   [favorites_foreach]
     <tr>
       <td>[favorites field=index]</td>
       <td>[favorites_link][favorites field=title][/favorites_link]</td>
     <tr>
   [/favorites_foreach]
</table>

不幸的是,事实证明很难将短代码放入 HTML 属性中,而且我不喜欢所涉及的权衡,所以我没有返回 link 的短代码,而是显示 link 的 <a>...</a> 标签的简码,包括 href。 favorites_foreachfavorites_link简码是"wrappers",他们需要运行自己的内容通过内置的WP函数do_shortcode来处理他们的简码内容.

这是一个很好的、简单的解决方案,它保持了我想要的 MVC 分离。