Wordpress从附件中获取发布信息

时间:2015-03-24 02:59:34

标签: php wordpress

我试图制作一个模板,在wordpress博客中显示所有使用过的图像,并链接到附有图像的帖子,如图库或投资组合页面,但我无法获得帖子单独的链接或标题页。 我做到了这一点:

 <?php
$post_parent = get_post($post->ID, ARRAY_A);
$parent = $post_parent['post_parent'];
$paged = ( get_query_var( 'paged' ) ) ? get_query_var('paged') : 1;
$attachments = get_children( array( 'post_parent' => $post_id, 'post_type' => 'attachment', 'orderby' => 'menu_order ASC, ID', 'order' => 'DESC', 'paged' => $paged, 'posts_per_page' =>9,) ); 
?>

和foreach:

<?php foreach($attachments as $id => $attachment) :
$img_title = $attachment->post_title;
$img_caption = $attachment->post_excerpt;
$img_description = $attachment->post_content;
?>

所以我查了一下codex,发现如何获得这样的img url:

<?php if ( have_posts() ) : ?>
<li>
<?php $image_attributes = wp_get_attachment_image_src( $id, full ); // returns an array
if( $image_attributes ) {?> 
<a  href="<?php echo $image_attributes[0]; ?>"><img src="<?php echo $image_attributes[0]; ?>" alt="<?php echo $img_alt; ?>" title="<?php echo $img_title; ?>" /></a>
<?php
echo $post->post_parent;
?>
<p><a href="<?php
echo get_post($id)->post_parent; ?>">link</a></p>
<?php } ?>
</li>
<?php endif; ?>

<?php endforeach; ?>

上面的这些代码效果很好,它会显示附在ul l列表中的所有图像。

然后我想在循环中添加一个指向父POST的链接,使用foreach中的内容,如:

<p><a href="<?php echo get_post($id)->post_parent; ?>">Post link</a></p>

但是它返回一个没有的链接或返回&#34; 0&#34;,如果我&#34; echo $ id&#34;,它返回附件ID而不是帖子ID(帖子ID是什么我想要。)

请问如何获取父帖子ID或只是在上面的循环中获取帖子链接和标题?救命啊!

谢谢!

1 个答案:

答案 0 :(得分:0)

立即查找答案。 我使用普通查询获取所有帖子,然后该查询在content(或其特色图片)中搜索img标签,然后循环显示该图片,或者选择在该图片下方显示摘录,然后完成此模板。

我当时正在考虑在媒体库中获取附件,但这不是正确的方法,有些媒体甚至没有附加到任何帖子上,所以这是一个死胡同。

但是查询帖子并使该查询选择带有“ <img”的帖子比查询附件要好一些,并且也易于理解。