Kan inte logga in i WordPress admin efter uppdatering till PHP 7 / PHP 7.1

Wordpress fel vid login redirect

Jag råkade ut för ett problem när jag flyttade en WordPressinstallation med ett tema baserat på CherryTemplates, inköpt på TemplateMonster.
Problemet yttrade sig som så att när jag gick till sidan xxx.yyy/wp-admin, så möttes jag bara av en blank sida. Om jag gick in på xxx.yyy/wp-login.php, så fungerade loginformuläret men när jag skulle vidarebefordras till admin från loginsidan, så möttes jag återigen av en blank sida.

Felsökning och rättning

Felet berodde på att någonstans skrivs mellanslag/radbryt ut under exekveringen av PHP-filer. Efter att ha spårat mig igenom wordpress-admins exekvering genom att tracea strängar, upptäckte jag att det var en fil i temat som såg ut såhär:

<?php /* Loop Name: Single */ ?>

<?php if (have_posts()) : while (have_posts()) : the_post();

	// The following determines what the post format is and shows the correct file accordingly

	$format = get_post_format();

	get_template_part( 'includes/post-formats/'.$format );

	if($format == '')

		get_template_part( 'includes/post-formats/standard' );

	get_template_part( 'includes/post-formats/share-buttons' );

	wp_link_pages('before=<div class="pagination">&after=</div>');

?>

<?php /* If a user fills out their bio info, it's included here */ ?>


<?php

	get_template_part( 'includes/post-formats/related-posts' );

	comments_template('', true);

	endwhile; endif; 

?>

Vad som händer där är att de rader som ligger mellan ?> och nästa <?php skrivs ut som radbryt. När detta sker skickas HTTP-headern och den omdirigering som WordPress senare försöker göra misslyckas eftersom headern redan skickats.

Lösning

Lösningen sker genom att ta bort allt mellanrum mellan ?> och <?php. I detta fallet gjorde jag det genom att plocka bort alla ?> och <?php taggar förutom första och sista. I annat fall hade det också fungerat att ta bort mellanrummen så att det hela tiden är ?><?php. (Varför man nu skulle vilja ha det på det viset..?)

Hoppas det hjälpte och kom ihåg att följa WordPressAkuten på Facebook eller Twitter för att få fler tips.