# wp_install_maybe_enable_pretty_permalinks()

URL: https://chugunov.pro/api-wordpress/functions/wp_install_maybe_enable_pretty_permalinks/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 4.2.0.

## Сигнатура

```php
wp_install_maybe_enable_pretty_permalinks(): bool
```

## Описание

Если после включения человекопонятные постоянные ссылки не работают, происходит откат к постоянным ссылкам на основе строки запроса.

## Возвращаемое значение

`bool`

## Исходный код

Файл: `wp-admin/includes/upgrade.php:496`

```php
function wp_install_maybe_enable_pretty_permalinks() {
	global $wp_rewrite;

	// Bail if a permalink structure is already enabled.
	if ( get_option( 'permalink_structure' ) ) {
		return true;
	}

	/*
	 * The Permalink structures to attempt.
	 *
	 * The first is designed for mod_rewrite or nginx rewriting.
	 *
	 * The second is PATHINFO-based permalinks for web server configurations
	 * without a true rewrite module enabled.
	 */
	$permalink_structures = array(
		'/%year%/%monthnum%/%day%/%postname%/',
		'/index.php/%year%/%monthnum%/%day%/%postname%/',
	);

	foreach ( (array) $permalink_structures as $permalink_structure ) {
		$wp_rewrite->set_permalink_structure( $permalink_structure );

		/*
		 * Flush rules with the hard option to force refresh of the web-server's
		 * rewrite config file (e.g. .htaccess or web.config).
		 */
		$wp_rewrite->flush_rules( true );

		$test_url = '';

		// Test against a real WordPress post.
		$first_post = get_page_by_path( sanitize_title( _x( 'hello-world', 'Default post slug' ) ), OBJECT, 'post' );
		if ( $first_post ) {
			$test_url = get_permalink( $first_post->ID );
		}

		/*
		 * Send a request to the site, and check whether
		 * the 'X-Pingback' header is returned as expected.
		 *
		 * Uses wp_remote_get() instead of wp_remote_head() because web servers
		 * can block head requests.
		 */
		$response          = wp_remote_get( $test_url, array( 'timeout' => 5 ) );
		$x_pingback_header = wp_remote_retrieve_header( $response, 'X-Pingback' );
		$pretty_permalinks = $x_pingback_header && get_bloginfo( 'pingback_url' ) === $x_pingback_header;

		if ( $pretty_permalinks ) {
			return true;
		}
	}

	/*
	 * If it makes it this far, pretty permalinks failed.
	 * Fallback to query-string permalinks.
	 */
	$wp_rewrite->set_permalink_structure( '' );
	$wp_rewrite->flush_rules( true );

	return false;
}
```

## История изменений

- 4.2.0 — Introduced.

## Связанные

Использует: [`sanitize_title`](https://chugunov.pro/api-wordpress/functions/sanitize_title/), [`wp_remote_get`](https://chugunov.pro/api-wordpress/functions/wp_remote_get/), [`wp_remote_retrieve_header`](https://chugunov.pro/api-wordpress/functions/wp_remote_retrieve_header/), [`get_page_by_path`](https://chugunov.pro/api-wordpress/functions/get_page_by_path/), `WP_Rewrite::set_permalink_structure`, `WP_Rewrite::flush_rules`, [`_x`](https://chugunov.pro/api-wordpress/functions/_x/), [`get_bloginfo`](https://chugunov.pro/api-wordpress/functions/get_bloginfo/), [`get_permalink`](https://chugunov.pro/api-wordpress/functions/get_permalink/), [`get_option`](https://chugunov.pro/api-wordpress/functions/get_option/).
Используется в: [`wp_install`](https://chugunov.pro/api-wordpress/functions/wp_install/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/wp_install_maybe_enable_pretty_permalinks/
