【问题标题】:get gallery images from advanced custom field Editor从高级自定义字段编辑器获取图库图像
【发布时间】:2017-09-11 16:49:31
【问题描述】:

我使用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 方法来获取画廊图像并循环浏览它们并在灯箱中显示这些图像,或者我应该尝试任何其他方法吗?

【问题讨论】:

    标签: php wordpress meta-boxes


    【解决方案1】:

    第一,我假设您已将“[gallery ids="53,54,55,56"]" 这个短代码放在元文件下,说明原因

    $gallery = get_post_meta($post->ID, 'gallery', true);
    回声$画廊;

    返回

    [图库 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());

    返回带有图像上传源的图像项数组列表。

    【讨论】:

    • 我需要遍历该图库并在灯箱中显示图像,echo do_shortcode("$gallery"); 只显示带有重定向页面的链接的图像
    • $galleries = get_post_gallery_images(get_the_ID());
    • @Regolith 代替发送这么短的画廊代码,你可以只发送一些它的图像 id,而不是像正则表达式和字符串修改等那样节省大量的精力...... :)
    【解决方案2】:

    这成功了

    <?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 }
    

    【讨论】:

      【解决方案3】:

      不可能,因为我认为您没有将图库短代码插入帖子编辑器, 所以 $galleries = get_post_gallery_images( get_the_ID() );一无所有。

      所以在您的元框字段中只输入图片 ID, 喜欢

      “53,54,55,56”

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

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

      那么$gallery_image_array会有一个图片ids,所以你可以循环遍历它,你可以通过wp_get_attachment_image_src得到这些图片

      并根据需要打印 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-07
        • 2017-01-06
        • 2019-11-07
        • 2014-03-23
        • 1970-01-01
        • 2018-09-05
        • 2017-01-14
        • 2018-04-15
        相关资源
        最近更新 更多