Replacing an Image gallery

时间:2014-10-27 作者:mjaim

我在常规的stackexchange网站上发布了这篇文章,但后来发现有一个特定于wordpress的网站,所以我将其重新发布在这里。

我正在尝试在我创建的自定义帖子类型中创建一个库。我希望能够通过wordpress管理编辑器将图像/图库添加到帖子中,但之后会有一个功能,即拉取图像,将其包装在div中,并用新图像替换现有图库。

我想这样做,因为我希望图像能够适合不同大小图像的网格。例如,图像1是全宽,图像2是半宽,图像3是四分之一,依此类推。

我试过两种方法,一种是get_children()

$featuredImage = get_post_thumbnail_id( $post->ID );
$imageArgs = array(
  \'numberposts\' => 5,
  \'order\' => \'DESC\',
  \'post_mime_type\' => \'image\',
  \'post_parent\' => $post->ID,
  \'post_type\' => \'attachment\',
  \'exclude\' => $featuredImage
);
$attachments = get_children($imageArgs, ARRAY_A);
$rekeyed_array = array_values($attachments);
$child_image = $rekeyed_array[0];
echo \'<div class="image-large"><img src="\' . $child_image[\'guid\'] . \'" class="project-image"></div>\';
$child_image = $rekeyed_array[1];
echo \'<div class="image-medium"><img src="\' . $child_image[\'guid\'] . \'"></div>\';
$child_image = $rekeyed_array[2];
echo \'<div class="image-small"><img src="\' . $child_image[\'guid\'] . \'"></div>\';
另一个是get_post_gallery()

$gallery = get_post_gallery( get_the_ID(), false );

        foreach( $gallery[\'src\'] AS $src )
        {
            ?>
            <div class="image-large">
            <img src="<?php echo $src; ?>" alt="Gallery image" />
            </div>
            <?php
        }
我在get_post_gallery(), 但我知道我必须使用wp_get_attachment_url() 获取全尺寸图像,而不是缩略图。

现在,有两个问题:

我对数组有点困惑,那么我该如何选择数组中的第一个图像并使用“image large”类将其包装在div中,然后使用“image medium”类将第二个图像包装在adiv中呢

EDIT

我想我解决了问题1。阅读关联数组并意识到您可以执行以下操作echo $gallery[\'src\'][0]; 获取每个图像的源url。但仍然对问题2感到困惑。

1 个回复
SO网友:mjaim

找到了答案。

//Remove original Gallery
function remove_the_first_gallery( $output, $attr ){
    $output = \'<!-- gallery 1 was here -->\';   // Must be non-empty.
    return $output;
}

add_filter( \'post_gallery\', \'remove_the_first_gallery\' );
删除了页面上的所有库。但由于我的新画廊从技术上讲不是post\\u画廊,所以它被单独保留了下来。

结束

相关推荐

Split Content and Gallery

有没有办法将帖子内容和库短代码分开。我想在我的正常内容之外显示库,无论其放置方式或位置如何。我可以用它来获取短代码本身:if(has_shortcode(get_the_content(), \'gallery\')){ $pattern = get_shortcode_regex(); preg_match(\"/$pattern/s\", get_the_content(), $matches); echo do_shortcode($matches[