0

我有一个显示所有帖子的 wordpress 循环。我需要计算特定帖子的所有图像。

<?php while ( $the_query->have_posts() ) : $the_query->the_post();
  $attachments = get_children( array( 'post_parent' => $post->ID, 'post_mime_type' => 'image' ) );

    $count = count( $attachments );
    $specific = array();
    $i = 1;
          foreach ( $attachments as $attachment ) {
         $specific[$attachment->ID] = $i;
    ++$i;
    }  ?> <a href="#"><?php echo $count; ?></a>
      <?php endwhile; ?>

问题是,它不起作用并且不显示图像计数。

4

3 回答 3

1

您可以像这样使用函数参考/获取附加媒体:

与 the_post();

$count = count( get_attached_media( 'image' ) );

或带有帖子ID

$count = count( get_attached_media( 'image', $post->ID ) );

文档:https ://codex.wordpress.org/Function_Reference/get_attached_media

于 2019-04-25T18:39:12.340 回答
0

您可以使用基本的 PHP 来执行此操作。每个图像都以可重复的 HTML 模式开头,因此只需使用 计数出现次数substr_count()

$image_count = substr_count( get_the_content(), '<img' );

这将为您提供<img>帖子中的数量。

于 2018-05-28T19:50:29.557 回答
0

这是一个解决方案,有关更多信息,请访问https://blog.josemcastaneda.com/2014/03/18/get-image-count-in-wordpress-post/

// Get all the galleries in the current post
    $galleries = get_post_galleries( get_the_ID(), false );
    // Count all the galleries
    $total_gal = count( $galleries );
    /**
     * count all the images
     * @param array $array The array needed
     * @return int returns the number of images in the post
     */
    function _get_total_images( $array ){
        $key = 0;
        $src = 0;
        while ( $key < count( $array ) ){
            $src += count( $array[$key]['src'] );
            $key++;
        }
        return intval( $src );
    }

    echo _get_total_images( $galleries );
于 2016-11-14T00:42:27.657 回答