Multisite: Introduce a `self_admin_url` filter to adjust the URL to an administration panel.
Props j.hoffmann. Fixes #37446. git-svn-id: https://develop.svn.wordpress.org/trunk@41060 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
c8e811cc7e
commit
55bb567e0f
|
@ -3397,12 +3397,24 @@ function user_admin_url( $path = '', $scheme = 'admin' ) {
|
||||||
* @return string Admin URL link with optional path appended.
|
* @return string Admin URL link with optional path appended.
|
||||||
*/
|
*/
|
||||||
function self_admin_url( $path = '', $scheme = 'admin' ) {
|
function self_admin_url( $path = '', $scheme = 'admin' ) {
|
||||||
if ( is_network_admin() )
|
if ( is_network_admin() ) {
|
||||||
return network_admin_url($path, $scheme);
|
$url = network_admin_url( $path, $scheme );
|
||||||
elseif ( is_user_admin() )
|
} elseif ( is_user_admin() ) {
|
||||||
return user_admin_url($path, $scheme);
|
$url = user_admin_url( $path, $scheme );
|
||||||
else
|
} else {
|
||||||
return admin_url($path, $scheme);
|
$url = admin_url( $path, $scheme );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filters the admin URL for the current site or network depending on context.
|
||||||
|
*
|
||||||
|
* @since 4.9.0
|
||||||
|
*
|
||||||
|
* @param string $url The complete URL including scheme and path.
|
||||||
|
* @param string $path Path relative to the URL. Blank string if no path is specified.
|
||||||
|
* @param string $scheme The scheme to use.
|
||||||
|
*/
|
||||||
|
return apply_filters( 'self_admin_url', $url, $path, $scheme );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group link
|
||||||
|
*/
|
||||||
|
class Tests_Link_Admin extends WP_UnitTestCase {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 37446
|
||||||
|
*/
|
||||||
|
public function test_self_admin_url() {
|
||||||
|
$this->assertSame( admin_url(), self_admin_url() );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 37446
|
||||||
|
*/
|
||||||
|
public function test_self_admin_url_with_path() {
|
||||||
|
$path = 'options-general.php';
|
||||||
|
|
||||||
|
$this->assertSame( admin_url( $path ), self_admin_url( $path ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 37446
|
||||||
|
*/
|
||||||
|
public function test_self_admin_url_with_path_and_scheme() {
|
||||||
|
$path = 'options-general.php';
|
||||||
|
$scheme = 'https';
|
||||||
|
|
||||||
|
$this->assertSame( admin_url( $path, $scheme ), self_admin_url( $path, $scheme ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 37446
|
||||||
|
*/
|
||||||
|
public function test_self_admin_url_filtered() {
|
||||||
|
$path = 'options-general.php';
|
||||||
|
$scheme = 'https';
|
||||||
|
|
||||||
|
add_filter( 'self_admin_url', array( $this, 'filter_self_admin_url' ), 10, 3 );
|
||||||
|
$result = self_admin_url( $path, $scheme );
|
||||||
|
remove_filter( 'self_admin_url', array( $this, 'filter_self_admin_url' ), 10 );
|
||||||
|
|
||||||
|
$expected = home_url( '/global-admin/' . $path, $scheme );
|
||||||
|
|
||||||
|
$this->assertSame( $expected, $result );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 37446
|
||||||
|
*/
|
||||||
|
public function filter_self_admin_url( $url, $path, $scheme ) {
|
||||||
|
return home_url( path_join( '/global-admin/', $path ), $scheme );
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue