wppaste
WordPress

wp_install_maybe_enable_pretty_permalinks(): bool

Since
4.2.0
Source
wp-admin/includes/upgrade.php:496
Maybe enable pretty permalinks on installation.

Description

If after enabling pretty permalinks don't work, fallback to query-string permalinks.

Return

bool
Whether pretty permalinks are enabled. False otherwise.

Uses · 8

Used by · 1

Source

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;}

History

Introduced in 4.2.0. Unchanged from 6.7.7 through 7.1.0.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

About this page

Parsed data
Generated from the wordpress-develop 6.9.7 tag, from src/wp-admin/includes/upgrade.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.