You can include the generador.php
after declaring the variable, for example:
single.php
<?php
/**
* The template for displaying all single posts
*
* @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post
*
* @package WordPress
* @subpackage Twenty_Seventeen
* @since 1.0
* @version 1.0
*/
get_header();
$mivariable = "hola";
include_once(__DIR__.'/generador.php');
?>
generador.php
<pre>
<?php var_dump($mivariable);?>
</pre>
That includes the generator and prints the value in a pre-formatted block just below the header.
If the wave is generating new content based on the current post and showing it when you click on a button you do not even need an include or a separate file, there are several ways to do it, I transcribe the most "slum programming way" ®:
single.php
<?php
/**
* The template for displaying all single posts
*
* @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post
*
* @package WordPress
* @subpackage Twenty_Seventeen
* @since 1.0
* @version 1.0
*/
get_header(); ?>
<div class="wrap">
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php
/* Start the Loop */
while ( have_posts() ) : the_post();
get_template_part( 'template-parts/post/content', get_post_format() );
// If comments are open or we have at least one comment,
// load up the comment template.
if ( comments_open() || get_comments_number() ) :
comments_template();
endif;
/*** AQUI PARSEAMOS EL CONTENIDO DEL POST ***/
$contenido = get_the_content();
// extraer links https://stackoverflow.com/a/24798689/1423096
$re = '/<a href=\"([^\"]*)\">(.*)<\/a>/iU';
if($num_found = preg_match_all($re, $contenido, $matches)) :
$losLinks = $matches[0];
/*** AQUI IMPRIMIMOS UN BOTON Y EL DIV OCULTO ***/
?>
<div>
<button
class="button button-primary"
onclick="document.getElementById('loslinks').style.display = 'block';"
>Mostrar enlaces</button>
<div id="loslinks" style="display:none;">
<ul>
<?php foreach($losLinks as $link) :?>
<li><?php echo $link;?></li>
<?php endforeach;?>
</ul>
</div>
</div>
<?php
endif;
/*******************************************/
the_post_navigation( array(
'prev_text' => '<span class="screen-reader-text">' .
__( 'Previous Post', 'twentyseventeen' ) .
'</span><span aria-hidden="true" class="nav-subtitle">' .
__( 'Previous', 'twentyseventeen' ) .
'</span> <span class="nav-title"><span class="nav-title-icon-wrapper">' .
twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) .
'</span>%title</span>',
'next_text' => '<span class="screen-reader-text">' .
__( 'Next Post', 'twentyseventeen' ) .
'</span><span aria-hidden="true" class="nav-subtitle">' .
__( 'Next', 'twentyseventeen' ) .
'</span> <span class="nav-title">%title<span class="nav-title-icon-wrapper">' .
twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ) .
'</span></span>',
) );
endwhile; // End of the loop.
?>
</main><!-- #main -->
</div><!-- #primary -->
<?php get_sidebar(); ?>
</div><!-- .wrap -->
<?php get_footer();
Ideally, it would be a hook or a shortcode in the functions.php, or even more portable to build a plugin.