I think you have to pass post ID parameter in the get_field() if you get data using loop.
so pass the in the get_field(). because currently it is trying to get data from current page field.
Try this if it works :
if( get_field( 'video_link', get_the_id() ) )
{
get_field( 'video_link', get_the_id() );
}
else
{
if( has_post_thumbnail( get_the_ID()
{
get_the_image( array( 'size' => 'portfolio-thumb', 'width' => 600, 'height' => 400, 'before' => '<div class="post-thumb">', 'after' => '</div>' ) );
}
}
So full loop content will be below:
<li id="post-<?php the_ID(); ?>" <?php post_class( $additional_classes ); ?> >
<?php if( get_field( 'video_link',get_the_ID() ) ) {
get_field( 'video_link',get_the_ID() );
} else {
if( has_post_thumbnail( get_the_ID())) {
get_the_image( array( 'size' => 'portfolio-thumb', 'width' => 600, 'height' => 400, 'before' => '<div class="post-thumb">', 'after' => '</div>' ) );
}
}
?>
<h3><a href="https://wordpress.stackexchange.com/questions/340689/<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'wp' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h3>
</li>
let me know if it works.
Thank you!