在模板文件中显示基于Pod的图像的最佳方法

时间:2014-02-20 20:35:14

标签: wordpress podscms

我对WordPress CMS比较陌生,决定将Pod用于我的自定义字段实现,包括几个图像字段。虽然我喜欢管理员用户界面,但我有点慌张,试图在我的帖子模板文件中输出图像。

经过大量的研究和实验,我想分享我使用的技术。显然,如果有更好的方式我想知道。

1 个答案:

答案 0 :(得分:1)

我学到的第一件事from the Pods forum是Pods将图像作为“附件”帖子保存到数据库中。因此,可以访问它们,因为您可以访问任何常规的旧WordPress附件。

附件与其帖子具有父子关系,这意味着您可以使用从WP beginners改编的代码段以编程方式获取给定帖子的所有附件:

<?php 
 if ( $post->post_type == 'post-type' && $post->post_status == 'publish' ) {
    $attachments = get_posts( array(
        'post_type' => 'attachment',
        'posts_per_page' => -1,
        'post_parent' => $post->ID,
        'exclude'     => get_post_thumbnail_id()
    ) );

    if ( $attachments ) {
        foreach ( $attachments as $attachment ) {
            $class = "post-attachment mime-" . sanitize_title( $attachment->post_mime_type );
            $thumbimg = wp_get_attachment_image( $attachment->ID, 'thumbnail');
            echo '<li class="' . $class . ' data-design-thumbnail">' . $thumbimg . '</li>';
        }

    }
}
?>

但是这个解决方案是次优的,因为只有在从媒体库中删除图像时才能破坏帖子和图像之间的父子关系。所以:

  1. 从原始帖子中移除的图片,但留在图书馆供将来使用的图片仍将通过原始帖子上的上述代码输出
  2. 如果您在不同帖子的Pod字段上重新定位图像,则上面的代码不会在新条目上打印出来。
  3. 附件系统不记录字段级关系。因此,如果您在帖子上有多个基于图像的Pod字段,则无论其字段是什么,上面的代码都会打印出来。
  4. 也就是说,我发现按字段输出基于Pod的图像数据的最佳选择是将'get_post_meta'功能概述为here on the WordPress support forums和'wp_get_attachment_image'功能,如下所示。

    <?php 
    if ( get_post_meta( get_the_ID(), 'image_field', false ) ){
        $image_array = get_post_meta( get_the_ID(), 'image_field', false );
    }
    if ( $image_array ) {
        echo '<ul>';
        foreach ( $image_array as $image ) {
            $class = "post-attachment mime-" . sanitize_title( $image->post_mime_type );
            $thumbimg = wp_get_attachment_image( $image['ID'], 'thumbnail');
            echo '<li class="' . $class . ' data-design-thumbnail">' . $thumbimg . '</li>';
        }
        echo '</ul>';
    }
    ?>
    

    前一个函数为您提供仅包含当前图像的对象。后者将具有大小和alt信息的图像限制为附件系统。