|null Kleingeschriebene Namen als Schluessel. */ private static $core = null; /** * Warum eine Option gesperrt ist: 'core', 'transient', 'self', 'invalid' * oder null, wenn sie nicht gesperrt ist. * * Der Vergleich ignoriert Gross-/Kleinschreibung, weil die Datenbank es * auch tut: "SiteURL" waere dieselbe Zeile wie "siteurl". * * @param mixed $name Optionsname. * @return string|null */ public static function lock_reason( $name ) { if ( ! is_string( $name ) || '' === $name || strlen( $name ) > self::MAX_NAME_LENGTH || false !== strpos( $name, "\0" ) ) { return 'invalid'; } $lower = strtolower( $name ); if ( 0 === strpos( $lower, 'wp360_dc_' ) ) { return 'self'; } // Transients raeumt der Bereich "Aufraeumen" weg, nicht der Autoload-Schalter. if ( 0 === strpos( $lower, '_transient_' ) || 0 === strpos( $lower, '_site_transient_' ) ) { return 'transient'; } if ( isset( self::core_names()[ $lower ] ) ) { return 'core'; } // "auto_update_*": die Schalter der automatischen Updates (Plugins, Themes, Kern). foreach ( array( 'widget_', 'theme_mods_', 'auto_update_' ) as $prefix ) { if ( 0 === strpos( $lower, $prefix ) ) { return 'core'; } } // "user_roles", auch auf Multisite ("wp_5_user_roles"). if ( strlen( $lower ) > 10 && 'user_roles' === substr( $lower, -10 ) ) { return 'core'; } return null; } /** * @param mixed $name Optionsname. * @return bool */ public static function is_locked( $name ) { return null !== self::lock_reason( $name ); } /** @return array */ private static function core_names() { if ( null === self::$core ) { $names = array( // populate_options(): was WordPress beim Einrichten anlegt. 'siteurl', 'home', 'blogname', 'blogdescription', 'users_can_register', 'admin_email', 'start_of_week', 'use_balancetags', 'use_smilies', 'require_name_email', 'comments_notify', 'posts_per_rss', 'rss_use_excerpt', 'mailserver_url', 'mailserver_login', 'mailserver_pass', 'mailserver_port', 'default_category', 'default_comment_status', 'default_ping_status', 'default_pingback_flag', 'posts_per_page', 'date_format', 'time_format', 'links_updated_date_format', 'comment_moderation', 'moderation_notify', 'permalink_structure', 'rewrite_rules', 'hack_file', 'blog_charset', 'moderation_keys', 'active_plugins', 'category_base', 'ping_sites', 'comment_max_links', 'gmt_offset', 'default_email_category', 'recently_edited', 'template', 'stylesheet', 'comment_registration', 'html_type', 'use_trackback', 'default_role', 'db_version', 'uploads_use_yearmonth_folders', 'upload_path', 'blog_public', 'default_link_category', 'show_on_front', 'tag_base', 'show_avatars', 'avatar_rating', 'upload_url_path', 'thumbnail_size_w', 'thumbnail_size_h', 'thumbnail_crop', 'medium_size_w', 'medium_size_h', 'avatar_default', 'large_size_w', 'large_size_h', 'image_default_link_type', 'image_default_size', 'image_default_align', 'close_comments_for_old_posts', 'close_comments_days_old', 'thread_comments', 'thread_comments_depth', 'page_comments', 'comments_per_page', 'default_comments_page', 'comment_order', 'sticky_posts', 'widget_categories', 'widget_text', 'widget_rss', 'uninstall_plugins', 'timezone_string', 'page_for_posts', 'page_on_front', 'default_post_format', 'link_manager_enabled', 'finished_splitting_shared_terms', 'site_icon', 'medium_large_size_w', 'medium_large_size_h', 'wp_page_for_privacy_policy', 'show_comments_cookies_opt_in', 'admin_email_lifespan', 'disallowed_keys', 'comment_previously_approved', 'auto_plugin_theme_update_emails', 'wp_force_deactivated_plugins', 'wp_attachment_pages_enabled', 'wp_notes_notify', // Weitere WordPress-eigene Optionen, die der Kern selbst pflegt. 'cron', 'initial_db_version', 'current_theme', 'fresh_site', 'wplang', 'recently_activated', 'active_sitewide_plugins', 'sidebars_widgets', 'recovery_keys', 'recovery_mode_email_last_sent', 'can_compress_scripts', 'auto_core_update_notified', 'finished_updating_comment_type', 'db_upgraded', 'theme_switched', 'theme_switched_via_customizer', 'https_detection_errors', 'user_count', 'blog_count', 'site_count', ); self::$core = array_fill_keys( $names, true ); } return self::$core; } }