Bird
Raised Fist0
Wordpressframework~10 mins

Reading and writing settings in Wordpress - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - Reading and writing settings
Start
Call get_option('setting_name')
Retrieve value from DB
Use value in code
Call update_option('setting_name', new_value)
Save new_value to DB
Confirm save success
End
This flow shows how WordPress reads a setting from the database using get_option, uses it, then writes a new value back with update_option.
Execution Sample
Wordpress
<?php
$value = get_option('my_setting');
if ($value === false) {
  update_option('my_setting', 'default');
}
?>
This code reads a setting 'my_setting', and if it doesn't exist, writes a default value.
Execution Table
StepFunction CalledInputActionOutput/Result
1get_option'my_setting'Look for 'my_setting' in DBReturns false (not found)
2Conditionif ($value === false)Check if value existsTrue, value missing
3update_option'my_setting', 'default'Save 'default' to DB under 'my_setting'Returns TRUE (success)
4End-Setting now saved-
💡 Setting 'my_setting' was missing, so default value was saved and process ends.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3Final
$valueundefinedfalsefalsefalsefalse
Key Moments - 2 Insights
Why does get_option return false sometimes?
Because the setting does not exist yet in the database, as shown in execution_table step 1.
What happens if update_option is called with a new setting?
It creates the setting in the database with the given value, as shown in execution_table step 3.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of $value after step 1?
ATRUE
Bfalse
C'default'
DUndefined
💡 Hint
Check the 'Output/Result' column in step 1 of the execution_table.
At which step does the setting get saved to the database?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look for update_option calls in the execution_table.
If get_option returned a value instead of false, what would happen?
AThe condition would be false and update_option would not run
Bupdate_option would still run
CThe code would error out
DThe value would be deleted
💡 Hint
Check the condition check in step 2 of the execution_table.
Concept Snapshot
Reading and writing settings in WordPress:
- Use get_option('name') to read a setting.
- Returns false if setting missing.
- Use update_option('name', value) to save or update.
- update_option creates setting if missing.
- Always check get_option result before update.
Full Transcript
This visual execution shows how WordPress reads and writes settings using get_option and update_option. First, get_option tries to find the setting in the database. If it returns false, it means the setting does not exist yet. Then, update_option is called to save a default value. This creates the setting in the database. The variable $value starts undefined, becomes false after get_option, and remains false since update_option does not change it directly. Understanding this flow helps beginners manage WordPress settings safely.

Practice

(1/5)
1. Which WordPress function is used to read a saved setting from the database?
easy
A. get_option
B. save_option
C. set_option
D. read_option

Solution

  1. Step 1: Understand the purpose of each function

    get_option is the WordPress function designed to retrieve saved settings. The others are not valid WordPress functions.
  2. Step 2: Confirm the correct function for reading settings

    Since get_option reads the saved option value, it is the correct choice.
  3. Final Answer:

    get_option -> Option A
  4. Quick Check:

    Read settings = get_option [OK]
Hint: Remember: get_option reads, update_option writes [OK]
Common Mistakes:
  • Confusing get_option with update_option
  • Using non-existent functions like save_option
  • Thinking set_option reads settings
2. Which of the following is the correct syntax to update a setting named 'site_color' to 'blue'?
easy
A. update_option('site_color', 'blue');
B. update_option('site_color' => 'blue');
C. get_option('site_color', 'blue');
D. set_option('site_color', 'blue');

Solution

  1. Step 1: Identify the correct function and syntax for updating

    The function to update a setting is update_option, which takes two parameters: the option name and the new value.
  2. Step 2: Check the syntax of each option

    update_option('site_color', 'blue'); correctly uses update_option('site_color', 'blue');. update_option('site_color' => 'blue'); uses an incorrect array syntax. get_option('site_color', 'blue'); uses get_option which reads, not writes. set_option('site_color', 'blue'); uses a non-existent function.
  3. Final Answer:

    update_option('site_color', 'blue'); -> Option A
  4. Quick Check:

    Update syntax = update_option(name, value) [OK]
Hint: update_option needs two arguments: name and value [OK]
Common Mistakes:
  • Using get_option to update values
  • Passing arguments as an array instead of separate parameters
  • Using non-existent set_option function
3. What will be the output of this code snippet?
$color = get_option('site_color', 'red');
echo $color;

Assuming 'site_color' is not set in the database.
medium
A. site_color
B. null
C. '' (empty string)
D. red

Solution

  1. Step 1: Understand get_option default value behavior

    If the option 'site_color' does not exist, get_option returns the default value provided as the second argument, here 'red'.
  2. Step 2: Determine the output of echo

    Since 'site_color' is not set, $color will be 'red', so echo outputs 'red'.
  3. Final Answer:

    red -> Option D
  4. Quick Check:

    Missing option returns default value [OK]
Hint: get_option returns default if option missing [OK]
Common Mistakes:
  • Assuming get_option returns empty string if missing
  • Confusing option name with value
  • Expecting null instead of default
4. Identify the error in this code snippet:
update_option('background_color');
medium
A. Function name should be get_option to update
B. update_option cannot update 'background_color'
C. Missing the new value parameter in update_option
D. update_option requires three parameters

Solution

  1. Step 1: Check update_option function parameters

    update_option requires two parameters: the option name and the new value to set.
  2. Step 2: Identify the missing parameter

    The code only passes the option name, missing the new value, causing an error.
  3. Final Answer:

    Missing the new value parameter in update_option -> Option C
  4. Quick Check:

    update_option needs name and value [OK]
Hint: update_option always needs two arguments [OK]
Common Mistakes:
  • Passing only one argument to update_option
  • Confusing get_option with update_option
  • Thinking update_option needs three parameters
5. You want to save a user preference 'font_size' only if it is a positive integer. Which code snippet correctly updates the setting safely?
hard
A.
update_option('font_size', $_POST['font_size']);
B.
$size = intval($_POST['font_size']);
if ($size > 0) {
  update_option('font_size', $size);
}
C.
if ($_POST['font_size']) {
  update_option('font_size', $_POST['font_size']);
}
D.
$size = $_POST['font_size'];
update_option('font_size', $size > 0 ? $size : 12);

Solution

  1. Step 1: Validate and sanitize the input

    $size = intval($_POST['font_size']);
    if ($size > 0) {
      update_option('font_size', $size);
    }
    uses intval to convert input to integer and checks if it is positive before saving.
  2. Step 2: Confirm safe update of option

    Only if the value is positive does it call update_option, preventing invalid data.
  3. Final Answer:

    $size = intval($_POST['font_size']);
    if ($size > 0) {
    update_option('font_size', $size);
    }
    -> Option B
  4. Quick Check:

    Validate input before update_option [OK]
Hint: Always validate input before update_option [OK]
Common Mistakes:
  • Saving raw user input without validation
  • Using update_option without checking value
  • Assuming non-empty input is always valid