I have a php page with some html content which is gonna appear on several pages. So I want to be able to include that page on other pages in the same way that you would include the header and footer. I have done this before but I cannot remember how, can you help?
You can use WP_Query and set the post_type to page and the page_id to what page you want to output. Then Loop through the contents:
<?php
$args = array(
'post_type' => 'page'
'page_id' => '20'
);
$query = new WP_Query( $args );
?>
<?php if ( $query->have_posts() ) : ?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
// Contents of the queried ppage results go here.
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
There is also a plugin that looks like it does what you want called insert page