I'm implementing a custom widget to create a logos slider. The initial code works well, but when I have added a metabox to the attachment screen to let the user add an external link to the images, I get some problems. What I want to do is to add the metabox, save it's value and when the widget is loaded on the front-end, retrive back the link that user have added for each image. The images are not attached to any post, and for now I'm able to see the new metabox but it can be edited only if the user click on the edit link of each image in the media library, I would prefere to see the box on the main selection screen of media gallery. I'm also unable to get the field value, I think because inside the code the images ids are not loaded.
public function initMetabox()
{
add_meta_box(
'image_link_box',
__('Link image to url'),
array($this, 'renderMetabox'),
'attachment'
);
}
public function renderMetabox( $post )
{
$url = get_post_meta( $post->ID, '_image_link_url', true );
?>
<label for="image-link"><?php _e('Image Link'); ?></label>
<input type="text" name="image_link" id="image-link" value="<?php echo $url; ?>" class="postbox">
<?php
}
public function saveLink( $post_id )
{
if( in_array( 'image_link', $_POST ) ){
update_post_meta(
$post_id,
'_image_link_url',
$_POST['image_link']
);
}
}
public function widget( $args, $instance )
{
$images = explode( ',', $instance['images'] );
$image_link = get_post_meta( $post->ID, '_image_link_url', true );
ob_start();
?>
<div class="swiper-container logo-slider" id="featured-logo-slider">
<div class="swiper-wrapper" id="featured-logo">
<?php foreach( $images as $image ): ?>
<?php foreach( $image_link as $link ): ?>
<a href="<?php echo $link; ?>"><img class="swiper-slide" src="<?php echo $image; ?>" alt="" width="100" id="client-logo"/></a>
<?php endforeach; ?>
<?php endforeach; ?>
</div>
<div class="swiper-scrollbar"></div>
</div>
<?php
echo ob_get_clean();
}
The foreach loop for the images links will produce an error Invalid argument supplied...
and the $post->ID variable is not available. Any suggestion will be appreciated