TechEarl

ACF Options Page Not Showing Up? Check These Things

An ACF Options Page that does not appear in wp-admin almost always traces to one of four things: missing acf_add_options_page() call, ACF Pro vs free version, location rules, or current_user_can capability mismatch.

Ishan Karunaratne⏱️ 6 min readUpdated
Share thisCopied
ACF Options Page missing from wp-admin? Four common causes: missing acf_add_options_page, free vs Pro, location rules, capability. Real fixes with code.

An ACF Options Page that does not appear in wp-admin is almost always one of four things. After many directory-site projects where global Options Pages hold the "site-wide settings" (header CTAs, footer links, contact info, social profiles), I have seen each of these cause a "where did my options page go" moment for someone on the team.

Jump to:

Cause 1: Missing acf_add_options_page() call

Options Pages do not appear automatically. Even with ACF Pro installed, you have to register each Options Page programmatically. The canonical pattern lives in your theme's functions.php or in a mu-plugins/ file:

php
add_action( 'acf/init', function () {
    if ( function_exists( 'acf_add_options_page' ) ) {
        acf_add_options_page( [
            'page_title' => 'Site Settings',
            'menu_title' => 'Site Settings',
            'menu_slug'  => 'site-settings',
            'capability' => 'manage_options',
            'redirect'   => false,
        ] );
    }
} );

The function-exists check matters because it guards against a deactivated plugin breaking the site. The acf/init action is the canonical hook (rather than init) because it fires after ACF has loaded its own functions.

Fix: search the codebase for acf_add_options_page. If it does not exist, add the registration as above.

Cause 2: Free version of ACF (no Options Pages support)

Options Pages are an ACF Pro feature. The free version of ACF does not include them. The acf_add_options_page function does not exist (which is why the function-exists check in Cause 1 matters), and any registration code silently does nothing.

Fix: confirm you are on ACF Pro. In wp-admin, Custom Fields > Updates should show "Advanced Custom Fields PRO" as the active plugin. If it shows just "Advanced Custom Fields", you are on the free version.

Note: as of 2024 the free version is officially "Advanced Custom Fields" maintained by WP Engine. There is also a community fork called Secure Custom Fields (SCF) maintained by the WordPress core team. Neither free version includes Options Pages support; both require a Pro upgrade or migration to ACF Pro for the Options Pages feature.

Cause 3: Field group location rules do not match

The Options Page appears in wp-admin (you can see it in the sidebar), but the page itself loads with "There are no fields available" or similar empty state. This means the Options Page exists, but no field group is configured to show on it.

Field groups need a location rule that explicitly targets the Options Page. In the field group's Location section:

  • Show this field group if: Options Page is equal to Site Settings (or whatever menu_slug you used).

Without that rule, the field group does not associate with the Options Page even if it was the only field group in the site.

Fix: open the field group you want on the Options Page, add a Location rule for "Options Page is equal to [your page]", save.

Cause 4: User does not have the required capability

The capability argument in acf_add_options_page defaults to 'edit_posts' if not specified. If you set it to 'manage_options' (administrator-only), users with the Editor role or below will not see the menu item.

Fix: confirm your user has the right capability. Administrators have manage_options. Editors have edit_posts but not manage_options. If you need Editors to access the Options Page, set the capability to 'edit_posts' in the registration:

php
acf_add_options_page( [
    'page_title' => 'Site Settings',
    'menu_title' => 'Site Settings',
    'menu_slug'  => 'site-settings',
    'capability' => 'edit_posts', // Editor + above
] );

If you need fine-grained control (only certain users with a custom role can edit), define a custom capability and add it to the relevant role via add_cap:

php
$role = get_role( 'editor' );
$role->add_cap( 'manage_site_settings' );

// then in the page registration:
'capability' => 'manage_site_settings',

Bonus: parent / child Options Page structure

For sites with many Options Pages (which is typical on directory sites: site settings, header settings, footer settings, social profiles, contact info), the parent/child structure keeps the admin sidebar clean:

php
add_action( 'acf/init', function () {
    if ( ! function_exists( 'acf_add_options_page' ) ) return;

    // Top-level parent
    $parent = acf_add_options_page( [
        'page_title' => 'Site Options',
        'menu_title' => 'Site Options',
        'menu_slug'  => 'site-options',
        'capability' => 'edit_posts',
        'redirect'   => true, // redirect to first child
    ] );

    // Children
    acf_add_options_sub_page( [
        'page_title'  => 'Header',
        'menu_title'  => 'Header',
        'parent_slug' => 'site-options',
    ] );

    acf_add_options_sub_page( [
        'page_title'  => 'Footer',
        'menu_title'  => 'Footer',
        'parent_slug' => 'site-options',
    ] );

    acf_add_options_sub_page( [
        'page_title'  => 'Social Profiles',
        'menu_title'  => 'Social Profiles',
        'parent_slug' => 'site-options',
    ] );
} );

This pattern produces a single "Site Options" top-level menu with three sub-pages, each with its own field group. Reading values from a sub-page uses the same get_field( 'field_name', 'option' ) pattern as a single Options Page; the parent/child distinction is purely for menu organization.

For deeper coverage of using Options Pages for site-wide settings, see Using ACF Options Pages for Global Site Settings.

The diagnostic order

When an ACF Options Page is not appearing in wp-admin:

  1. Is ACF Pro installed? Custom Fields > Updates should show "Advanced Custom Fields PRO". If not, Options Pages are not available.
  2. Is acf_add_options_page called anywhere? Grep the codebase. If missing, add it.
  3. Does the user have the right capability? Log in as admin to confirm the page appears for an admin user. If yes for admin but no for the role you expect, adjust the capability argument.
  4. If the page appears but is empty: check field group location rules. The field group needs a "Options Page is equal to [page]" rule.
  5. If using parent/child structure: confirm the parent_slug on the sub-pages matches the parent's menu_slug exactly.

In my experience, cause 1 (missing registration) and cause 3 (wrong location rules) cover roughly 80% of "Options Page not showing" tickets. The free-vs-Pro confusion catches the rest. Once these are eliminated, the Options Page setup is reliable for years on end. The pattern has been stable since ACF Pro 5.0.

For AI-assisted setup of new Options Pages (where the assistant reads your existing field groups and generates the registration boilerplate), see Using Claude CLI to Manage WordPress Sites.

Sources

Authoritative references this article was fact-checked against.

TagsWordPressACFOptions PagesDebugging

Found this useful? Pass it on.

Copied

Ishan Karunaratne

Tech Architect · Software Engineer · AI/DevOps

Tech architect and software engineer with 20+ years building software, Linux systems, and DevOps infrastructure, and lately working AI into the stack. Currently Chief Technology Officer at a healthcare tech startup, which is where most of these field notes come from.

Keep reading

Related posts

Using ACF Options Pages for Global Site Settings

ACF Options Pages are the right home for site-wide settings: header CTAs, footer links, social profiles, contact info, global announcements. Registration, reading patterns, parent/child structure, and the cache-busting trick for high-traffic sites.