使用API​​中的WordPress帖子的正确方法是什么?

时间:2013-04-28 20:45:54

标签: wordpress

使用WordPress帖子作为纯数据结构的诀窍是什么?

传统上,您使用“The Loop”并通过以下函数输出数据:

<?php the_title(); ?>
<?php the_content(); ?>

这些函数将文本直接转储到响应中。

使用$ wpdb,我可以获得这样的帖子数组:

$posts = $wpdb->get_results("SOME SQL HERE", OBJECT);

然后我得到一个stdClass对象的数组,这些对象是...... Post-ish,我猜。它们具有“post_title”等属性,但是没有永久链接,这让我觉得这不是“正确的”Post对象。此外,“post_content”不是完整的HTML - 它仍然有换行符等。

迭代这个数组时,我发现我必须这样做:

foreach ($events as $post)
{
   setup_postdata($post);
   ...

这使该帖子在全球范围内。然后我可以使用上述函数来编写内容,并使用这样的函数来获取元数据:

$display_date = get_custom_field('display_date');

有更好的方法吗?这看起来很奇怪。有没有办法将帖子完整地表示为一个对象,包含所有元数据,以及我需要从数据级别操作它的所有其他内容,而不是仅仅假设我想将输出转储到响应中?

1 个答案:

答案 0 :(得分:1)

您可以改为使用WP_Query,就像

一样
$the_query = new WP_Query( $args );
while ( $the_query->have_posts() ) : $the_query->the_post();
    echo '<li>' . get_the_title() . '</li>';
endwhile;

您必须准备$args arguments数组以进行自定义查询,例如,您可以使用

// Display posts that have "books" tag
$the_query = new WP_Query( 'tag=books' );

// Display posts that have these categories
$the_query = new WP_Query( 'category_name=event,news' );

或更复杂的

// Display posts tagged with bob, under people custom taxonomy
$args = array(
    'post_type' => 'post',
    'people' => 'bob'
);
$the_query = new WP_Query( $args );

您也可以使用query_posts,但它与WP_Query略有不同,您也可以使用get_post并仅在无法获取时才使用custom select query使用WordPress的方式获得所需的结果。关于WP_Query vs query_posts() vs get_posts()有一个很好的答案,请阅读此内容以便更好地理解。