文字出版社;将图像 id 数组转换为 url

Wordpress; Convert array of image ids to urls

我正在从头开始构建主题并使用 Visual Composer 插件。

我使用 VC 制作了一个自定义元素,以允许用户上传一组图片。

当用户选择一组图像时,它们将作为图像 ID 数组返回。

我正在尝试创建一个简码,将 id 数组转换为 src 个元素的数组。

我知道我必须使用 foreach 循环,但在网上看了几个小时后,我似乎无法弄清楚如何正确编写它。显然只是在这里学习,所以要温柔;)

我制作自定义 VC 元素的代码如下所示(已编辑):

vc_map( 
    array(
        'base' => 'foo',
        'params' => array( 
            array(
                'type' => 'attach_images',
                'param_name' => 'images',
            ),
        );
    );
);

我的短代码(到目前为止)如下所示:

function foo_shortcode($atts){

    extract( shortcode_atts( array (
        'images' => '',
    ), $atts ) );

    $images = $unkonwn_foreach_loop;

    $output = '<div class="gallery">' . $missing_list_of_src_elements . '</div>' . "\n";

    return $output;

}
add_shortcode( 'foo', 'foo_shortcode' );

看了好几个教程,看了一堆文章,离得越来越近了,但还没破解。我认为将我所有失败的尝试添加为示例没有多大意义,因此我将上面的代码精简为只有我知道没问题的行。

我们一如既往地非常感谢任何帮助理解如何将它们组合在一起的帮助。

谢谢!

您可以在循环中使用函数 wp_get_attachment_image_src 来获取 src 元素。

function foo_shortcode($atts){

        extract( shortcode_atts( array (
            'images' => '',
        ), $atts ) );

        $output = '<div class="gallery">';

        // temp debug for check if $images is array
        //var_dump($images);

        // string to array
        $array_images_ids = explode(',', $images);

        foreach($array_images_ids as $id){
            $img = wp_get_attachment_image_src($id, 'thumbnail');
            $output .= '<img src="' . esc_url($img[0]) . '" />';
        }

        $output .= '</div>' . "\n";

        return $output;

    }
    add_shortcode( 'foo', 'foo_shortcode' );

有关函数​​ wp_get_attachment_image_src() 的更多信息:https://developer.wordpress.org/reference/functions/wp_get_attachment_image_src/

在您的短代码中,您有一个值为 unkonwn_foreach_loop 的变量图像,我在您的代码中找不到他的值。因此,我假设您已经拥有一个包含图像所有 ID 的数组。另外,您应该检查一下这个很棒的功能: wp_get_attachment_image_src

function foo_shortcode($atts){

extract( shortcode_atts( array (
    'images' => '',
), $atts ) );

$images = $array_with_id; // I presume $array_with_id contains a single array with all of your images id
$images_src = array(); // Initializing this array

foreach($images as $image_id) { // get the src of the IDs image and put it in the array images_src
    $images_src[] = wp_get_attachment_image_src( $image_id, 'full' );
}

$output = '<div class="gallery">';
// I added another foreach here to output not only the src, but also the img element. Here, you can do whatever modification you want to.
foreach($images_src as $image_src) {
    $output .= '<img src="'.$image_src[0].'" alt="" title="">';
}
$output .= '</div>' . "\n";

return $output;

}
add_shortcode( 'foo', 'foo_shortcode' );

希望对您有所帮助