Monday, 29 July 2019

Shortcode: Images not being returned after explode()

I'm created a custom element which extends the WPBakery plugin. This custom element will be an image slider. Users choose how many images they want from the single backend option, the images will then be exploded (explode()), returning and showing the images - That's the idea anyway.

However, I cannot figure out why my images are not being returned? The surrounding content is being rendered in the front end, but the li, in which the src's of these images sit, they're empty. Also, I have three images in chosen in the backend, but on one li is being rendered.

Here is the complete markup:

<?php 
if ( ! defined( 'ABSPATH' ) ) {
        die( '-1' );
}

class vcImageCarousel extends WPBakeryShortCode {
 
    function __construct() {
        add_action( 'init', array( $this, 'vc_imageCarousel_mapping' ) );
        add_shortcode( 'vc_imageCarousel', array( $this, 'vc_imageCarousel_html' ) );
    }

    vc_map( 
        array(
            'name' => __('Image Carousel', 'text-domain'),
            'base' => 'vc_imageCarousel',
            'description' => __('Image Carousel', 'text-domain'), 
            'params' => array(
                array(
                    'type' => 'attach_images',
                    'heading' => esc_html__("Images"),
                    'param_name' => 'image',
                    'value' => esc_html__(''),
                    'admin_label' => false,
                    'weight' => 0,
                    'group' => __( 'Content', 'my-text-domain' ),
                )  
            )
        )
    );
     
    public function vc_imageCarousel_html( $atts ) {
         
            extract(
                shortcode_atts(
                    array(
                        'id'                                    => '',
                        'class'                                 => '',
                    ), 
                    $atts
                )
            );

            // map background image attributes
            $image = shortcode_atts(
                        array(
                                'image' => 'image',
                        ), 
                        $atts 
                );

                $image_ids=explode(',',$image['image']);

                
                $result = "<div class='imageCarousel'>";
                $result .= "<div class='imageCarousel__container justify-content-center'>";
                $result .= "<ul>";

                foreach( $image_ids as $image_id ){
                        $result .='<li>';
                        $result .= var_dump($image_id);
                        $result .= wp_get_attachment_image_src( $image_id, 'full' );
                        $result .='</li>';
                }

                $result .= "</ul>";
                $result .= "</div>";
                $result .= "</div>";

                return $result;


    }
     
}

new vcImageCarousel(); ?>

A var_dump($image_id) returns string(5) "image".



from Shortcode: Images not being returned after explode()

No comments:

Post a Comment