从高级自定义字段编辑器获取图库图像

时间:2017-09-11 05:34:30

标签: php wordpress meta-boxes

我使用advanced custom field插件

创建了一个包含编辑器的元框

此元框显示一个文本编辑器,我可以从中创建并添加图库。

但是在检索图库数据时。

$gallery = get_post_meta($post->ID, 'gallery', true);     
echo $gallery;

显示

[gallery ids="53,54,55,56"]

通常,图库数据可以像

一样重新审核
$galleries = get_post_gallery_images( get_the_ID() ); 

但如果我使用元框保存图库,这似乎不起作用。

是否有wordpress方式来获取图库图像并循环显示它们并在灯箱中显示这些图像,还是应该尝试其他任何方法?

3 个答案:

答案 0 :(得分:0)

第一,我假设你已经把“[gallery ids =”53,54,55,56“]”这个简短的代码提交给了

  

$ gallery = get_post_meta($ post-> ID,'gallery',true);
  echo $ gallery;

返回

  

[gallery ids =“53,54,55,56”]

可以尝试这个

  

$ gallery = get_post_meta($ post-> ID,'gallery',true);
  echo do_shortcode($ gallery);

并且

  

$ galleries = get_post_gallery_images(get_the_ID());

返回包含图像上传源的图像项数组列表。

答案 1 :(得分:0)

这就是诀窍

<?php
$gallery = get_post_meta($post->ID, 'gallery', true);

preg_match('/\[gallery.*ids=.(.*).\]/', $gallery, $ids);
$images_id = explode(",", $ids[1]);
if ($images_id[0] != "") {
    if (is_array($images_id) || is_object($images_id)) {
        foreach ($images_id as $image) {
            $image_url = wp_get_attachment_image_src($image, 'banner');
            ?>
            <a href="<?php echo $image_url[0]; ?>">
                <?php echo wp_get_attachment_image($image, 'destinatoin', 'false', array("class" => "img-responsive")); ?>
            </a>
        <?php }
    }
} ?>

应该做什么

preg_match('/\[gallery.*ids=.(.*).\]/', $gallery, $ids);
$images_id = explode(",", $ids[1]);

将创建一个id数组,然后我可以通过

循环遍历图像
   foreach ($images_id as $image) {
        $image_url = wp_get_attachment_image_src($image, 'banner');
        ?>
        <a href="<?php echo $image_url[0]; ?>">
            <?php echo wp_get_attachment_image($image, 'destinatoin', 'false', array("class" => "img-responsive")); ?>
        </a>
    <?php }

答案 2 :(得分:0)

不可能因为我认为你没有将画廊短代码插入帖子编辑器, 所以$ galleries = get_post_gallery_images(get_the_ID());没有任何东西。

因此,在您的元框文件中放入图像ID, 喜欢

  

&#34; 53,54,55,56&#34;

  

$ gallery = get_post_meta($ post-&gt; ID,&#39; gallery&#39;,true);

$ gallery变量将返回一个逗号分隔的字符串,然后将其爆炸 $ gallery_image_array = explode($ gallery);

然后$ gallery_image_array会有一个图像ID,所以你可以遍历它,你可以通过wp_get_attachment_image_src获得这些图像

并根据需要打印:)