Do you need to query only the items that has `banner_link` value set to `https://www.mypage.com` ? If no, you can remove the `meta_query` part from your query. <?php // function to show home page banner using query of banner post type function wptutsplus_home_page_banner() { // start by setting up the query $get_banner = new WP_Query( array( 'post_type' => 'banners', 'meta_query' => array( array( 'key' => 'banner_link', 'value' => 'https://www.mypage.com' ) ) )); // now check if the query has posts and if so, output their content in a banner-box div if ( $get_banner->have_posts() ) { ?> <?php while ( $get_banner->have_posts() ) : $get_banner->the_post(); ?> <div class="container" align="center"><a href="<?php echo get_post_meta( $post->ID, 'banner_link', true ); ?>"><?php the_post_thumbnail(); ?></a></div> <?php endwhile; ?> <?php } wp_reset_postdata(); } ?> **UPDATE** As you're using it inside a plugin. You can do like the following: <?php // function to show home page banner using query of banner post type function wptutsplus_home_page_banner() { // start by setting up the query $get_banner = new WP_Query( array( 'post_type' => 'banners', 'meta_query' => array( array( 'key' => 'banner_link', 'value' => 'https://www.mypage.com' ) ) )); // now check if the query has posts and if so, output their content in a banner-box div if ( $get_banner->have_posts() ) : while ( $get_banner->have_posts() ) : $get_banner->the_post(); $output = '<div class="container" align="center"><a href="'.get_post_meta( $post->ID, 'banner_link', true ).'">'.get_the_post_thumbnail().'</a></div>'; endwhile; endif; wp_reset_postdata(); return $output; } ?> And then call it anywhere with `<?php echo wptutsplus_home_page_banner(); ?>` Let me know if it works.