Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

To create a custom permalink structure, sign in to WordPress and open Settings → Permalinks. Choose Custom Structure, enter a path made from WordPress structure tags (not your full domain), and save it. For individual posts, end the pattern with %postname% or %post_id% so WordPress can resolve the post URL.

Set a custom permalink structure in the WordPress dashboard

  1. Sign in to the WordPress administration area.
  2. Open Settings → Permalinks.
  3. Choose one of the presets, or select Custom Structure.
  4. Type the path pattern, including the opening and closing slashes you want, but do not enter the site’s domain name. For example, /%year%/%monthnum%/%postname%/.
  5. For a post URL, finish the pattern with %postname% or %post_id%.
  6. Click Save Changes. WordPress reports whether it updated the rewrite configuration or whether the displayed .htaccess rules require manual attention.

The official guidance describes these as permanent URLs, so choose a pattern that can remain stable as your site grows. WordPress’s permalink documentation explains the available structures and tags.

Which built-in structure should you choose?

WordPress provides these common choices. The best option depends on whether brevity, publication dates, or a numeric identifier matters for your long-term URL policy; WordPress does not designate one universal best structure.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Preset URL information Typical shape
Plain A query-parameter URL containing the post ID ?p=123
Day and name Year, month, day, and post slug /%year%/%monthnum%/%day%/%postname%/
Month and name Year, month, and post slug /%year%/%monthnum%/%postname%/
Numeric A numeric post identifier /%post_id%/
Post name Only the sanitized post-title slug /%postname%/
Custom Structure Any supported combination of structure tags For example, /%year%/%monthnum%/%postname%/

Date components make publication timing visible but create longer paths. A slug-only pattern is shorter; a post-ID pattern remains independent of title wording. Treat the choice as a URL policy decision rather than an assumed ranking or traffic guarantee.

Use structure tags in a custom pattern

Structure tags are placeholders that WordPress replaces when it builds a URL. The documented tags include:

  • %year%, %monthnum%, %day%, %hour%, %minute%, and %second% for publication date and time components.
  • %post_id% for the unique post ID.
  • %postname% for the sanitized post-title slug.
  • %category% for a sanitized category slug; nested categories can produce nested path segments.
  • %author% for a sanitized author name.

Examples you can enter in Custom Structure include:

  • /%postname%/ — a short slug-based URL.
  • /%year%/%monthnum%/%postname%/ — year and month followed by the slug.
  • /archives/%year%/%monthnum%/%day%/%postname%/ — a more detailed archive-style path documented for the settings screen.

Do not paste https://example.com or any other full URL into the field; the field contains only the path pattern.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Customize category and tag archive bases

In the Optional section of the Permalinks screen, set the category and tag bases. A category base of topics, for example, produces a path such as /topics/category-name/. These fields let you change the prefixes, but the documented settings do not remove the prefixes altogether. See the Settings Permalinks screen documentation for the available fields.

If a post belongs to multiple categories, WordPress’s documented behavior places only one category in the permalink and selects it alphabetically. Sites that need to control which category appears must use a compatible extension; evaluate any plugin for current WordPress compatibility and maintenance before installing it.

Fix pretty permalinks that do not work

Check the rewrite message on the Permalinks screen

When you save, WordPress attempts to write the required rewrite rules. If .htaccess is not writable, the screen displays the rules and instructions for adding them manually. Apply those rules exactly as shown, using the access and change controls available on your server.

Confirm the web server supports the configuration

Pretty and almost-pretty permalinks require the necessary web-server rewrite configuration. If the server is not configured, WordPress’s user documentation advises contacting your hosting provider rather than changing the URL pattern repeatedly. The WordPress permalink guide describes this dependency.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Refresh rules when appropriate

Opening the Permalinks screen triggers a rewrite-rule flush; WordPress says you do not need to save merely to perform that refresh. After changing a structure, visiting Settings → Permalinks is therefore a useful administrative refresh step.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Define custom URLs in code

Dashboard structures are sufficient for ordinary posts and archives. Developers creating custom post types or entirely new routes use WordPress’s rewrite APIs. The Rewrite API handbook explains how rewrite rules map URL patterns to query variables, while WP_Rewrite::add_permastruct() documents a permastruct—the pattern from which WordPress generates rewrite rules.

Custom post types

register_post_type() includes rewrite-related settings for a custom post type. If its rules do not appear immediately, an administrator may need to visit Settings → Permalinks and refresh the structure, as noted in the developer reference.

Flush only when rules change

Code-defined rules must be refreshed after they change, but repeatedly flushing on every request is discouraged because it is unnecessary work. The developer guidance recommends flushing when the permalink structure changes—for example, during plugin activation—and not on ordinary page loads. Follow the Rewrite API guidance and the relevant permastruct reference for implementation details.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Plugin-based extensions

The Custom Post Type Rewrite plugin listing is one example of an extension offering date-based, author-based, and front structures for custom post types. It instructs administrators to refresh permalinks after installation. It is an option to evaluate, not a requirement for using WordPress’s built-in settings.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.