我对WordPress CMS比较陌生,决定将Pod用于我的自定义字段实现,包括几个图像字段。虽然我喜欢管理员用户界面,但我有点慌张,试图在我的帖子模板文件中输出图像。
经过大量的研究和实验,我想分享我使用的技术。显然,如果有更好的方式我想知道。
答案 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>';
}
}
}
?>
但是这个解决方案是次优的,因为只有在从媒体库中删除图像时才能破坏帖子和图像之间的父子关系。所以:
也就是说,我发现按字段输出基于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信息的图像限制为附件系统。