将WordPress帖子作为纯数据结构使用有什么窍门?使用API的WordPress帖子的正确方法是什么?
传统上,你用“循环”和输出数据通过函数是这样的:
<?php the_title(); ?>
<?php the_content(); ?>
这些功能转储文本直接进入响应。
使用WPDB $,我能找回桩的阵列是这样的:
$posts = $wpdb->get_results("SOME SQL HERE", OBJECT);
我再拿到这是stdClass的对象数组...张贴十岁上下,我猜。他们有“post_title”等属性,但没有固定链接,这让我认为这不是“正确的”Post对象。此外,“POST_CONTENT”是不完整的HTML - 它仍然有换行符等
当遍历这个数组,我发现我必须这样做:
foreach ($events as $post)
{
setup_postdata($post);
...
这使这个帖子在全球范围内。然后,我可以使用上述功能,写出来的内容,并使用类似这样的函数来获取元数据:
$display_date = get_custom_field('display_date');
有没有更好的办法?这似乎...奇怪。有没有办法将一篇文章的完整表示作为一个对象,包含所有的元数据,以及我需要从数据级别操作它的所有其他内容,而不是假设我想将输出转储到响应中?
这是正确的。在某些情况下可以使用wpdb,但是WP_Query是蜜蜂为所有事情而屈膝。它有你需要有效使用帖子的所有东西。该循环基本上是基于WP_Query构建的,但是如Sheikh所建议的那样使用它将允许在没有WPDB缺点的情况下进行定制。 – rncrtr 2013-04-29 02:19:57
WP_Query的结果是一个WP_Post对象的数组,这是朝着正确方向迈出的一步,但他们似乎还没有永久链接。从这个对象中,我如何获得一个帖子的URL?那么帖子的自定义字段又如何?这些字段似乎也不在对象之上。 – Deane 2013-04-29 13:28:03
我发现它:get_permalink($ post-ID)。我仍然不明白为什么这不能成为对象的财产。此外,我发现虚拟属性会为您提供元数据 - 只需将它们存在即可:$ post-> my_custom_field_name。 – Deane 2013-04-29 14:34:25