you don’t need to call wp_reset_postdata()
for get_posts()
because it does not actually modify global variable $wp_query
.
$posts
though is a global variable used by WordPress. Change that to a new name and what you have should work.
$args = array( 'post_type' => 'quote', 'posts_per_page' => 1, 'orderby' => 'rand' );
$quote_posts = get_posts( $args );
if (sizeof($quote_posts) > 0) {
echo '<p class="quote"><span class="quote-sym">"</span>'.$quote_posts[0]->post_content.'<span class="quote-sym">"</span></p>';
$author = trim(get_field("author", $quote_posts[0]->ID));
if (!empty($author)) {echo '<p class="author">- '.$author.'</p>';}
}
//End block