Bug aktualizacji Wordpress 4.9

W najnowszej wersji Wordpressa 4.9 pojawił się błąd polegający na niewykrywaniu niestandardowych szablonów stron podczas tworzenia nowej strony lub edycji już istniejącej.

Na szczęście internauci wychodząc zjawisku naprzeciw, stworzyli kilka tymczasowych rozwiązań, które można zastosować w trakcie oczekiwania na oficjalny fix producenta:

Instalacja pluginu dostępnego pod tym adresem: https://github.com/connorlacombe/WP-Clear-File-Cache

Podmiana funkcji get_files w /wp-includes/class-wp-theme.pl linia:986 na:

public function get_files( $type = null, $depth = 0, $search_parent = false ) {

// get and cache all theme files to start with.

// $label = sanitize_key( 'files_' . $this->cache_hash . '-' . $this->get( 'Version' ) );
// $transient_key = substr( $label, 0, 29 ) . md5( $label );

$do_caching = $depth > 1; 
$all_files = false; 

if ( $do_caching ) { 
// get and cache all theme files to start with. 
$label = sanitize_key( 'files_' . $this->cache_hash . '-' . $this->get( 'Version' ) ); 
$transient_key = substr( $label, 0, 29 ) . md5( $label ); 

$all_files = get_transient( $transient_key ); 
}

// $all_files = get_transient( $transient_key );

if ( false === $all_files ) {
$all_files = (array) self::scandir( $this->get_stylesheet_directory(), null, -1 );

if ( $search_parent && $this->parent() ) {
$all_files += (array) self::scandir( $this->get_template_directory(), null, -1 );
}

// set_transient( $transient_key, $all_files, HOUR_IN_SECONDS );
$do_caching && set_transient( $transient_key, $all_files, 5 * MINUTE_IN_SECONDS ); 
}

// Filter $all_files by $type & $depth.
$files = array();
if ( $type ) {
$type = (array) $type;
$_extensions = implode( '|', $type );
}
foreach ( $all_files as $key => $file ) {
if ( $depth >= 0 && substr_count( $key, '/' ) > $depth ) {
continue; // Filter by depth.
}
if ( ! $type || preg_match( '~\.(' . $_extensions . ')$~', $file ) ) { // Filter by type.
$files[ $key ] = $file;
}
}

return $files;
}