在循环内获取插入的POST媒体文件的链接

时间:2014-10-08 作者:user49869

在循环中,我想检索每个帖子插入的媒体文件的URL。

我的尝试是:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
   <a href="<?php wp_get_attachment_url(the_ID()) ?>">
     <?php the_title(); ?>
   </a>
<?php endwhile; ?>
但我不能让它工作。我确保每个帖子都插入了一个文件。此外,我想问,如果一篇文章有多个文件,该如何处理。

Edit:

    <?php if ( have_posts() ) : while (have_posts()) : the_post();
    $args = array( \'post_type\' => \'attachment\', \'posts_per_page\' => -1, \'post_status\' => null, \'post_parent\' => $post->ID );
                $attachments = get_posts( $args );
                if ( $attachments ) {
                    foreach ( $attachments as $attachment ) {
                      ?>
                         <div class="col-lg-4">
                            <p class="center"> <?php  the_title(); ?></p>
                          <a href="<?php echo wp_get_attachment_url( $attachment->ID ); ?>">
                          <div id="post-<?php the_ID(); ?>" class="download-block bold">
                        DOWNLOAD
                    </div>
                </a>
            </div>
                      <?php
                    }
                }
    endwhile; endif; ?>

Edit 2:

<?php if ( have_posts() ) : while (have_posts()) : the_post(); ?>
        <div class="col-lg-4 col-md-4 col-md-4 col-sm-4">
            <p class="center"> <?php echo get_the_title(); ?></p>
    <?php
                $args = array( \'post_type\' => \'attachment\', \'posts_per_page\' => -1, \'post_status\' => null, \'post_parent\' => $post->ID );
                $attachments = get_posts( $args );
                if ( $attachments ) {
                    foreach ( $attachments as $attachment ) {
                      ?>

                          <a href="<?php echo wp_get_attachment_url( $attachment->ID ); ?>">

                        DOWNLOAD
                    </div>
                </a>
            </div>
                      <?php
                    }
                }
            endwhile; endif; ?>
当我运行the_title(); 外部if($attachments) 条件,它运行良好,标题为我提供了每个帖子的所有标题。

2 个回复
最合适的回答,由SO网友:Robert hue 整理而成

您可以像这样获取附件URL。

<?php if ( have_posts() ) : while (have_posts()) : the_post(); ?>
   <a href="<?php $featured_image_url = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), \'full\' ); echo $featured_image_url[0]; ?>">
     <?php the_title(); ?>
   </a>
<?php endwhile; endif; ?>
首先,您需要获取附件ID,因此您需要从get_post_thumbnail_id 然后我们可以使用wp_get_attachment_image_src 并将从数组中打印图像的URL。

还有这个get_post_thumbnail_id 将获取特征图像的附件(图像)ID。这并不取决于你在一篇帖子中上传了多少图片。您必须为帖子指定特色图片。

EDIT:

如果只想打印PDF附件的链接,则可以使用此代码。这将要做的是搜索一篇文章的所有PDF附件,然后只打印第一个PDF附件的链接。所以你不必担心帖子中会有更多的PDF文件。

<?php if ( have_posts() ) : while (have_posts()) : the_post();
    $args = array( \'post_type\' => \'attachment\', \'posts_per_page\' => -1, \'post_status\' => null, \'post_parent\' => $post->ID );
    $attachments = get_posts( $args );
    if ( $attachments ) {
        foreach ( $attachments as $attachment ) {
          ?>
              <a href="<?php echo wp_get_attachment_url( $attachment->ID ); ?>"><?php echo get_the_title(); ?></a>
          <?php
        }
    }
endwhile; endif; ?>

EDIT 2

在WordPress循环或内容中发布此内容。php或循环。php

<?php
    $args = array( \'post_type\' => \'attachment\', \'posts_per_page\' => -1, \'post_parent\' => $post->ID );
    $attachments = get_posts( $args );
    if ( $attachments ) {
        foreach ( $attachments as $attachment ) {
          ?>
              <a href="<?php echo wp_get_attachment_url( $attachment->ID ); ?>"><?php echo get_the_title; ?></a>
          <?php
        }
    }
?>

SO网友:user65112

经过一点修改,它帮助我找到了PDF文件的链接:

$args = array( \'post_type\' => \'attachment\', \'posts_per_page\' => -1, \'post_status\' => null, \'post_parent\' => $post->ID );
$attachments = get_posts( $args );
if ( $attachments ) {
    foreach ( $attachments as $attachment )
    {
        if( strpos( wp_get_attachment_url( $attachment->ID ) , \'.pdf\') )
        {
            ?>
              <li><a href="<?php echo wp_get_attachment_url( $attachment->ID ); ?>"><?php echo \'mi archivo PDF\' ?></a></li>
          <?php
        }

    }
}

结束