-
-
Save kemenaran/a9a52d516ac556a57058fab7dcc8f92b to your computer and use it in GitHub Desktop.
<?php | |
/** | |
* Plugin Name: ColibriWP Fix Options | |
* | |
* How to use: | |
* | |
* 1. Put this file inside the wp-content/plugins/ directory; | |
* 2. In the Wordpress Dashboard, navigate to the Extensions page; | |
* 3. Enable the "ColibriWP Fix Options" extension; | |
* 4. Load any page with a `colibriwp-try-fix-serialization` GET parameter. | |
* For instance, `https://www.your-wordpress-site.com/index.php?colibriwp-try-fix-serialization=true` | |
*/ | |
function fix_str_length($matches) { | |
$string = $matches[2]; | |
$right_length = strlen($string); // yes, strlen even for UTF-8 characters, PHP wants the mem size, not the char count | |
return 's:' . $right_length . ':"' . $string . '";'; | |
} | |
function extendthemes_fix_serialized($string) | |
{ | |
// securities | |
if (!preg_match('/^[aOs]:/', $string)) return $string; | |
if (@unserialize($string) !== false) return $string; | |
$string = preg_replace("%\n%", "", $string); | |
// doublequote exploding | |
$data = preg_replace('%";%', "µµµ", $string); | |
$tab = explode("µµµ", $data); | |
$new_data = ''; | |
foreach ($tab as $line) { | |
$new_data .= preg_replace_callback('%\bs:(\d+):"(.*)%', 'fix_str_length', $line); | |
} | |
return $new_data; | |
} | |
function get_option_raw($option) { | |
global $wpdb; | |
$suppress = $wpdb->suppress_errors(); | |
$row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) ); | |
$wpdb->suppress_errors( $suppress ); | |
return $row->option_value; | |
} | |
add_action('init', function () { | |
if (isset($_REQUEST['colibriwp-try-fix-serialization'])) { | |
$x = get_option_raw( 'extend_builder_theme'); | |
if (is_string($x)) { | |
$x = preg_replace('#\r?\n#', " ", $x); | |
$x = extendthemes_fix_serialized($x); | |
$y = unserialize($x); | |
if(is_array($y)){ | |
update_option('extend_builder_theme', $y); | |
var_dump($y); | |
} else { | |
wp_die( 'Au au' ); | |
} | |
} | |
} | |
}); |
I have the same issue after migrating a website to another server.
Since I couldn't access admin in the new server due to the error appearing in every webpage, I put the fix in the old server and followed the instructions, then I copied DB and files to the new one. Still the error persists: any idea, please?
@ivansammartino er, I'm not sure… If on your new server you move the wp-content/plugins/colibri
directory somewhere else (like to wp-content/plugins-disabled/
), this will probably allow you to regain access to the admin console on the new server. Then you can try to apply the script directly to your new server maybe?
Jai presque le même problème est je n'arrive pas a le résoudre je sais que c'est le plugin colibri que pose problème:
Fatal error: Uncaught TypeError: array_replace_recursive(): Argument #2 must be of type array, null given in C:\xampp\htdocs\medic\wp-content\plugins\colibri-page-builder\extend-builder\data\theme-data.php:213 Stack trace: #0 C:\xampp\htdocs\medic\wp-content\plugins\colibri-page-builder\extend-builder\data\theme-data.php(213): array_replace_recursive(Array, NULL) #1 C:\xampp\htdocs\medic\wp-content\plugins\colibri-page-builder\extend-builder\data\theme-data.php(143): ExtendBuilder\get_theme_data() #2 C:\xampp\htdocs\medic\wp-content\plugins\colibri-page-builder\extend-builder\data\theme-data.php(41): ExtendBuilder\get_plugin_option('css_by_partials...') #3 C:\xampp\htdocs\medic\wp-content\plugins\colibri-page-builder\extend-builder\data\data.php(254): ExtendBuilder\get_colibri_options() #4 C:\xampp\htdocs\medic\wp-content\plugins\colibri-page-builder\extend-builder\data\theme-data.php(199): ExtendBuilder\get_current_data(-1, true) #5 C:\xampp\htdocs\medic\wp-content\plugins\colibri-page-builder\extend-builder\data\theme-data.php(224): ExtendBuilder\get_theme_data('colors', true, Array) #6 C:\xampp\htdocs\medic\wp-content\plugins\colibri-page-builder\extend-builder\gutenberg.php(6): ExtendBuilder\get_current_theme_data('colors', Array) #7 C:\xampp\htdocs\medic\wp-includes\class-wp-hook.php(307): ExtendBuilder{closure}('') #8 C:\xampp\htdocs\medic\wp-includes\class-wp-hook.php(331): WP_Hook->apply_filters(NULL, Array) #9 C:\xampp\htdocs\medic\wp-includes\plugin.php(474): WP_Hook->do_action(Array) #10 C:\xampp\htdocs\medic\wp-settings.php(565): do_action('after_setup_the...') #11 C:\xampp\htdocs\medic\wp-config.php(98): require_once('C:\xampp\htdocs...') #12 C:\xampp\htdocs\medic\wp-load.php(50): require_once('C:\xampp\htdocs...') #13 C:\xampp\htdocs\medic\wp-admin\admin.php(34): require_once('C:\xampp\htdocs...') #14 C:\xampp\htdocs\medic\wp-admin\index.php(10): require_once('C:\xampp\htdocs...') #15 {main} thrown in C:\xampp\htdocs\medic\wp-content\plugins\colibri-page-builder\extend-builder\data\theme-data.php on line 213
si une personne aurais une idéé
@seasox thanks! I updated the gist, and added some usage instructions above.