I guess you have:
the_content();
wp_link_pages();
in your theme file. So you can instead try the following (PHP 5.4+):
/**
* Append the wp_link_pages to the content.
*/
! is_admin() && add_filter( 'the_content', function( $content )
{
if( in_the_loop() )
{
$args = [ 'echo' => false ]; // <-- Adjust the arguments to your needs!
$content .= wp_link_pages( $args );
}
return $content;
}, 10 ); // <-- Adjust the priority to your needs!
and then adjust the arguments and priority to your needs. Notice the echo
parameter, it's set to false, because we need to return the output. You then have to remove wp_link_pages()
from your (child) theme file.
Update:
If we don't want to remove the extra wp_link_pages()
by hand, we can use the wp_link_pages
filter to only display the output, within our the_content
filter callback:
/**
* Append the wp_link_pages to the content.
*/
! is_admin() && add_filter( 'the_content', function( $content )
{
if( in_the_loop() )
{
$args = [ 'echo' => false, '_show' => true ]; // <-- Adjust the arguments to your needs!
$content .= wp_link_pages( $args );
}
return $content;
}, 10 ); // <-- Adjust the priority to your needs!
/**
* Only display wp_link_pages() output when the '_show' argument is true.
*/
add_filter( 'wp_link_pages', function( $output, $args )
{
return ! isset( $args['_show'] ) || ! wp_validate_boolean( $args['_show'] ) ? '' : $output;
}, 10, 2 );
where we've introduced the extra _show
argument for this purpose.