我想构造一个查询来显示自定义帖子(“podcast”)的列表,以及它们各自附件的URL。每个自定义post\\u类型(“podcast”)都有1个附件(属于其post\\u父级的mp3文件)。我想要一个无序的列表,显示播客的标题,以及它的附件url(附件的guid),如下所示:
<ul>
<li>Podcast Title - http://..../podcast.mp3</li>
我通过wp查询实现了这一点:
<?php query_posts(\'showposts=1&post_type=podcasts\'); ?>
<ul>
<?php while (have_posts()): the_post(); ?>
<li><?php the_title(); ?><br>
<?php
$args = array( \'post_type\' => \'attachment\', \'post_parent\' => $post->ID );
$attachments = get_posts($args);
if ($attachments) {
foreach ( $attachments as $attachment ) {
echo $attachment->guid;
}
} ?>
</li>
<?php endwhile; ?>
</ul>
但我想知道如何使用原始SQL查询进行解决。我尝试了太多的问题,这让我头晕目眩-任何帮助都将是惊人的!
*编辑:决定同意约翰对WordPress查询的建议。谢谢你,我相信其他人将来也会觉得这很有用。
最合适的回答,由SO网友:John P Bloch 整理而成
相信我们,你想使用WordPress的查询解决方案。它提供了一整套很棒的额外功能,如对象缓存、元数据自动加载等。此外,它几乎可以保证与转发兼容。
所以如何做你所询问的事情。像这样的事情应该会起作用:
<?php
$podcasts = new WP_Query( array(
\'post_type\' => \'podcasts\',
\'posts_per_page\' => 10, // the number of podcasts you want to show. use -1 for all of them.
));
foreach ( $podcasts as $podcast ) {
$attachment = get_posts(\'post_type=attachment&post_status=inherit&post_parent=\'.$podcast->ID);
if ($attachment) {
$attachment = $attachment[0];
?>
<li><?php echo get_the_title( $podcast->ID ); ?> - <?php echo wp_get_attachment_url( $attachment->ID ); ?></li>
<?php
}
}
?>