{"id":5586,"date":"2026-02-12T20:44:51","date_gmt":"2026-02-13T01:44:51","guid":{"rendered":"https:\/\/chubes.net\/?documentation=wp_options"},"modified":"2026-03-13T03:28:15","modified_gmt":"2026-03-13T07:28:15","slug":"wp_options","status":"publish","type":"documentation","link":"https:\/\/chubes.net\/docs\/wordpress-core\/database-schema\/wp_options\/","title":{"rendered":"wp_options"},"content":{"rendered":"<p>Key-value store for site settings, plugin options, and transient data.<\/p><h2 class=\"wp-block-heading\">Schema<\/h2><figure class=\"wp-block-table\"><table><thead><tr><th>Column<\/th><th>Type<\/th><th>Null<\/th><th>Default<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td><code>option_id<\/code><\/td><td>bigint(20) unsigned<\/td><td>NO<\/td><td>auto_increment<\/td><td>Unique identifier<\/td><\/tr><tr><td><code>option_name<\/code><\/td><td>varchar(191)<\/td><td>NO<\/td><td>&#8221;<\/td><td>Option key (unique)<\/td><\/tr><tr><td><code>option_value<\/code><\/td><td>longtext<\/td><td>NO<\/td><td>NULL<\/td><td>Option value (can be serialized)<\/td><\/tr><tr><td><code>autoload<\/code><\/td><td>varchar(20)<\/td><td>NO<\/td><td>&#8216;yes&#8217;<\/td><td>Whether to load on every page<\/td><\/tr><\/tbody><\/table><\/figure><h2 class=\"wp-block-heading\">Indexes<\/h2><figure class=\"wp-block-table\"><table><thead><tr><th>Key Name<\/th><th>Columns<\/th><th>Unique<\/th><th>Purpose<\/th><\/tr><\/thead><tbody><tr><td><code>PRIMARY<\/code><\/td><td>option_id<\/td><td>Yes<\/td><td>Primary key<\/td><\/tr><tr><td><code>option_name<\/code><\/td><td>option_name<\/td><td>Yes<\/td><td>Unique constraint + lookup<\/td><\/tr><tr><td><code>autoload<\/code><\/td><td>autoload<\/td><td>No<\/td><td>Filter autoloaded options<\/td><\/tr><\/tbody><\/table><\/figure><h2 class=\"wp-block-heading\">Foreign Key Relationships<\/h2><p>None\u2014standalone configuration table.<\/p><h2 class=\"wp-block-heading\">Autoload Behavior<\/h2><p>Options with <code>autoload = 'yes'<\/code> are loaded into memory on every WordPress request via:<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">wp_load_alloptions()<\/code><\/pre><\/div><p>This is cached in object cache. Setting <code>autoload = 'no'<\/code> for rarely-used options improves performance.<\/p><h2 class=\"wp-block-heading\">Core Option Categories<\/h2><h3 class=\"wp-block-heading\">Site Settings<\/h3><figure class=\"wp-block-table\"><table><thead><tr><th>Option<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td><code>siteurl<\/code><\/td><td>WordPress installation URL<\/td><\/tr><tr><td><code>home<\/code><\/td><td>Site homepage URL<\/td><\/tr><tr><td><code>blogname<\/code><\/td><td>Site title<\/td><\/tr><tr><td><code>blogdescription<\/code><\/td><td>Site tagline<\/td><\/tr><tr><td><code>admin_email<\/code><\/td><td>Admin email address<\/td><\/tr><tr><td><code>timezone_string<\/code><\/td><td>Timezone setting<\/td><\/tr><tr><td><code>date_format<\/code><\/td><td>Date display format<\/td><\/tr><tr><td><code>time_format<\/code><\/td><td>Time display format<\/td><\/tr><\/tbody><\/table><\/figure><h3 class=\"wp-block-heading\">Reading\/Writing<\/h3><figure class=\"wp-block-table\"><table><thead><tr><th>Option<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td><code>posts_per_page<\/code><\/td><td>Posts per archive page<\/td><\/tr><tr><td><code>posts_per_rss<\/code><\/td><td>Posts per RSS feed<\/td><\/tr><tr><td><code>show_on_front<\/code><\/td><td>&#8216;posts&#8217; or &#8216;page&#8217;<\/td><\/tr><tr><td><code>page_on_front<\/code><\/td><td>Static front page ID<\/td><\/tr><tr><td><code>page_for_posts<\/code><\/td><td>Blog page ID<\/td><\/tr><tr><td><code>default_category<\/code><\/td><td>Default post category<\/td><\/tr><tr><td><code>default_comment_status<\/code><\/td><td>Default comment status<\/td><\/tr><\/tbody><\/table><\/figure><h3 class=\"wp-block-heading\">Permalinks<\/h3><figure class=\"wp-block-table\"><table><thead><tr><th>Option<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td><code>permalink_structure<\/code><\/td><td>Permalink pattern<\/td><\/tr><tr><td><code>category_base<\/code><\/td><td>Category URL prefix<\/td><\/tr><tr><td><code>tag_base<\/code><\/td><td>Tag URL prefix<\/td><\/tr><tr><td><code>rewrite_rules<\/code><\/td><td>Serialized rewrite rules<\/td><\/tr><\/tbody><\/table><\/figure><h3 class=\"wp-block-heading\">Theme\/Appearance<\/h3><figure class=\"wp-block-table\"><table><thead><tr><th>Option<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td><code>template<\/code><\/td><td>Active theme directory<\/td><\/tr><tr><td><code>stylesheet<\/code><\/td><td>Active child theme directory<\/td><\/tr><tr><td><code>current_theme<\/code><\/td><td>Theme display name<\/td><\/tr><tr><td><code>sidebars_widgets<\/code><\/td><td>Widget assignments<\/td><\/tr><tr><td><code>theme_mods_{theme}<\/code><\/td><td>Theme customization<\/td><\/tr><tr><td><code>nav_menu_options<\/code><\/td><td>Navigation menu settings<\/td><\/tr><\/tbody><\/table><\/figure><h3 class=\"wp-block-heading\">Cron &amp; Transients<\/h3><figure class=\"wp-block-table\"><table><thead><tr><th>Pattern<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td><code>cron<\/code><\/td><td>Scheduled tasks<\/td><\/tr><tr><td><code>_transient_{name}<\/code><\/td><td>Cached data<\/td><\/tr><tr><td><code>_transient_timeout_{name}<\/code><\/td><td>Transient expiration<\/td><\/tr><tr><td><code>_site_transient_{name}<\/code><\/td><td>Network transient<\/td><\/tr><\/tbody><\/table><\/figure><h3 class=\"wp-block-heading\">Plugin Settings<\/h3><p>Plugins typically use patterns like:<\/p><ul class=\"wp-block-list\"><li><code>{plugin_slug}_settings<\/code><\/li><li><code>{plugin_slug}_options<\/code><\/li><li><code>{plugin_slug}_version<\/code><\/li><\/ul><h2 class=\"wp-block-heading\">Common Queries<\/h2><h3 class=\"wp-block-heading\">Get option value<\/h3><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">sql<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-sql\"><code class=\"language-sql\">SELECT option_value \nFROM wp_options \nWHERE option_name = &#039;siteurl&#039;;<\/code><\/pre><\/div><h3 class=\"wp-block-heading\">Get all autoloaded options<\/h3><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">sql<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-sql\"><code class=\"language-sql\">SELECT option_name, option_value \nFROM wp_options \nWHERE autoload = &#039;yes&#039;;<\/code><\/pre><\/div><h3 class=\"wp-block-heading\">Calculate autoload size<\/h3><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">sql<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-sql\"><code class=\"language-sql\">SELECT \n  SUM(LENGTH(option_value)) as total_bytes,\n  COUNT(*) as option_count\nFROM wp_options \nWHERE autoload = &#039;yes&#039;;<\/code><\/pre><\/div><h3 class=\"wp-block-heading\">Find large options<\/h3><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">sql<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-sql\"><code class=\"language-sql\">SELECT option_name, LENGTH(option_value) as size_bytes\nFROM wp_options \nORDER BY size_bytes DESC \nLIMIT 20;<\/code><\/pre><\/div><h3 class=\"wp-block-heading\">Find expired transients<\/h3><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">sql<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-sql\"><code class=\"language-sql\">SELECT o.option_name, o.option_value\nFROM wp_options o\nJOIN wp_options t ON t.option_name = CONCAT(&#039;_transient_timeout_&#039;, \n  SUBSTRING(o.option_name, 12))\nWHERE o.option_name LIKE &#039;_transient_%&#039;\n  AND o.option_name NOT LIKE &#039;_transient_timeout_%&#039;\n  AND t.option_value &lt; UNIX_TIMESTAMP();<\/code><\/pre><\/div><h3 class=\"wp-block-heading\">Delete expired transients<\/h3><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">sql<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-sql\"><code class=\"language-sql\">DELETE a, b FROM wp_options a\nLEFT JOIN wp_options b ON b.option_name = CONCAT(&#039;_transient_timeout_&#039;, \n  SUBSTRING(a.option_name, 12))\nWHERE a.option_name LIKE &#039;_transient_%&#039;\n  AND a.option_name NOT LIKE &#039;_transient_timeout_%&#039;\n  AND b.option_value IS NOT NULL\n  AND b.option_value &lt; UNIX_TIMESTAMP();<\/code><\/pre><\/div><h3 class=\"wp-block-heading\">Optimize autoload<\/h3><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">sql<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-sql\"><code class=\"language-sql\">-- Find options that shouldn&#039;t autoload\nSELECT option_name, LENGTH(option_value) as size\nFROM wp_options \nWHERE autoload = &#039;yes&#039; \n  AND LENGTH(option_value) &gt; 10000\nORDER BY size DESC;\n\n-- Disable autoload for specific option\nUPDATE wp_options \nSET autoload = &#039;no&#039; \nWHERE option_name = &#039;large_serialized_option&#039;;<\/code><\/pre><\/div><h2 class=\"wp-block-heading\">WordPress API Functions<\/h2><ul class=\"wp-block-list\"><li><code>get_option( $option, $default )<\/code> &#8211; Get option value<\/li><li><code>add_option( $option, $value, $deprecated, $autoload )<\/code> &#8211; Add option<\/li><li><code>update_option( $option, $value, $autoload )<\/code> &#8211; Update\/add option<\/li><li><code>delete_option( $option )<\/code> &#8211; Delete option<\/li><li><code>set_transient( $name, $value, $expiration )<\/code> &#8211; Set transient<\/li><li><code>get_transient( $name )<\/code> &#8211; Get transient<\/li><li><code>delete_transient( $name )<\/code> &#8211; Delete transient<\/li><\/ul><h2 class=\"wp-block-heading\">Performance Notes<\/h2><h3 class=\"wp-block-heading\">Autoload Optimization<\/h3><p>Large sites should audit autoloaded options:<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">sql<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-sql\"><code class=\"language-sql\">SELECT SUM(LENGTH(option_value))\/1024 as kb FROM wp_options WHERE autoload=&#039;yes&#039;;<\/code><\/pre><\/div><p>Target: Keep autoload under 1MB total.<\/p><h3 class=\"wp-block-heading\">Transient Cleanup<\/h3><p>Transients without expiration never auto-delete. Periodically clean:<\/p><div class=\"code-block-wrapper\"><div class=\"code-block-header\"><span class=\"code-block-language\">php<\/span><button class=\"code-copy-btn\" aria-label=\"Copy code\"><svg><use href=\"https:\/\/chubes.net\/wp-content\/themes\/chubes\/assets\/icons\/chubes.svg#icon-copy\"><\/use><\/svg><\/button><\/div><pre data-chubes-enhanced class=\"wp-block-code language-php\"><code class=\"language-php\">delete_transient( &#039;my_cached_data&#039; );\n\/\/ or\nwp_cache_flush(); \/\/ if using object cache<\/code><\/pre><\/div><h3 class=\"wp-block-heading\">Option Name Limit<\/h3><p>The 191-character limit on <code>option_name<\/code> accommodates UTF-8 in InnoDB with <code>utf8mb4<\/code>. Longer names will be truncated.<\/p>","protected":false},"excerpt":{"rendered":"<p>Key-value store for site settings, plugin options, and transient data. Schema Column Type Null Default Description option_id bigint(20) unsigned NO auto_increment Unique identifier option_name varchar(191) NO &#8221; Option key (unique)&#8230;<\/p>\n","protected":false},"featured_media":0,"template":"","meta":{"footnotes":""},"tags":[],"project":[611],"project_type":[749],"class_list":["post-5586","documentation","type-documentation","status-publish","hentry","project-database-schema","project_type-wordpress-reference"],"project_info":{"id":589,"name":"WordPress Core","slug":"wordpress-core"},"project_type_info":{"id":749,"name":"WordPress Reference","slug":"wordpress-reference"},"_links":{"self":[{"href":"https:\/\/chubes.net\/wp-json\/wp\/v2\/documentation\/5586","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chubes.net\/wp-json\/wp\/v2\/documentation"}],"about":[{"href":"https:\/\/chubes.net\/wp-json\/wp\/v2\/types\/documentation"}],"version-history":[{"count":3,"href":"https:\/\/chubes.net\/wp-json\/wp\/v2\/documentation\/5586\/revisions"}],"predecessor-version":[{"id":8938,"href":"https:\/\/chubes.net\/wp-json\/wp\/v2\/documentation\/5586\/revisions\/8938"}],"wp:attachment":[{"href":"https:\/\/chubes.net\/wp-json\/wp\/v2\/media?parent=5586"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chubes.net\/wp-json\/wp\/v2\/tags?post=5586"},{"taxonomy":"project","embeddable":true,"href":"https:\/\/chubes.net\/wp-json\/wp\/v2\/project?post=5586"},{"taxonomy":"project_type","embeddable":true,"href":"https:\/\/chubes.net\/wp-json\/wp\/v2\/project_type?post=5586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}