A solution made by AI for Opera Mobile:
add this to functions.php
/**
Combined solution to force the Visual Editor in Opera Mobile
*/
function ultimate_opera_mobile_gutenberg_fix() {
$user_agent = $_SERVER['HTTP_USER_AGENT'] ?? '';
// Check based on the specific User Agent provided
if ( strpos($user_agent, 'OPR/') !== false && strpos($user_agent, 'Mobile') !== false ) {
// 1. Server-side settings (PHP)
$user_id = get_current_user_id();
if ( $user_id ) {
// Force the "Visual Editor" setting in user profile
update_user_meta( $user_id, 'wp_rich_editing', 'true' );
}
// Force rich editing permission
add_filter( 'user_can_richedit', '__return_true', 999 );
// Disable script concatenation to improve loading compatibility
if ( !defined('CONCATENATE_SCRIPTS') ) {
define('CONCATENATE_SCRIPTS', false);
}
// 2. Inject Client-Side fix script (JS)
add_action('admin_print_footer_scripts', function() {
?>
<script type="text/javascript">
(function() {
function forceVisual() {
// Check if Gutenberg data stores are initialized
if (window.wp && wp.data && wp.data.dispatch('core/edit-post')) {
const mode = wp.data.select('core/edit-post').getEditorMode();
// If stuck in Code/Text mode, switch to Visual
if (mode === 'text') {
wp.data.dispatch('core/edit-post').switchEditorMode('visual');
}
}
}
// Run on initial load and again after a delay to ensure editor is ready
window.addEventListener('load', forceVisual);
setTimeout(forceVisual, 3000);
})();
</script>
<?php
}, 20);
}
}
add_action( 'admin_init', 'ultimate_opera_mobile_gutenberg_fix' );