本文整理汇总了PHP中get_site_by_path函数的典型用法代码示例。如果您正苦于以下问题:PHP get_site_by_path函数的具体用法?PHP get_site_by_path怎么用?PHP get_site_by_path使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了get_site_by_path函数的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: test_get_site_by_path
/**
* @ticket 27003
* @ticket 27927
*/
function test_get_site_by_path()
{
$ids = array('wordpress.org/' => array('domain' => 'wordpress.org', 'path' => '/'), 'wordpress.org/foo/' => array('domain' => 'wordpress.org', 'path' => '/foo/'), 'wordpress.org/foo/bar/' => array('domain' => 'wordpress.org', 'path' => '/foo/bar/'), 'make.wordpress.org/' => array('domain' => 'make.wordpress.org', 'path' => '/'), 'make.wordpress.org/foo/' => array('domain' => 'make.wordpress.org', 'path' => '/foo/'), 'www.w.org/' => array('domain' => 'www.w.org', 'path' => '/'), 'www.w.org/foo/' => array('domain' => 'www.w.org', 'path' => '/foo/'), 'www.w.org/foo/bar/' => array('domain' => 'www.w.org', 'path' => '/foo/bar/'));
foreach ($ids as &$id) {
$id = self::factory()->blog->create($id);
}
unset($id);
$this->assertEquals($ids['wordpress.org/'], get_site_by_path('wordpress.org', '/notapath/')->blog_id);
$this->assertEquals($ids['wordpress.org/'], get_site_by_path('www.wordpress.org', '/notapath/')->blog_id);
$this->assertEquals($ids['wordpress.org/foo/bar/'], get_site_by_path('wordpress.org', '/foo/bar/baz/')->blog_id);
$this->assertEquals($ids['wordpress.org/foo/bar/'], get_site_by_path('www.wordpress.org', '/foo/bar/baz/')->blog_id);
$this->assertEquals($ids['wordpress.org/foo/bar/'], get_site_by_path('wordpress.org', '/foo/bar/baz/', 3)->blog_id);
$this->assertEquals($ids['wordpress.org/foo/bar/'], get_site_by_path('www.wordpress.org', '/foo/bar/baz/', 3)->blog_id);
$this->assertEquals($ids['wordpress.org/foo/bar/'], get_site_by_path('wordpress.org', '/foo/bar/baz/', 2)->blog_id);
$this->assertEquals($ids['wordpress.org/foo/bar/'], get_site_by_path('www.wordpress.org', '/foo/bar/baz/', 2)->blog_id);
$this->assertEquals($ids['wordpress.org/foo/'], get_site_by_path('wordpress.org', '/foo/bar/baz/', 1)->blog_id);
$this->assertEquals($ids['wordpress.org/foo/'], get_site_by_path('www.wordpress.org', '/foo/bar/baz/', 1)->blog_id);
$this->assertEquals($ids['wordpress.org/'], get_site_by_path('wordpress.org', '/', 0)->blog_id);
$this->assertEquals($ids['wordpress.org/'], get_site_by_path('www.wordpress.org', '/', 0)->blog_id);
$this->assertEquals($ids['make.wordpress.org/foo/'], get_site_by_path('make.wordpress.org', '/foo/bar/baz/qux/', 4)->blog_id);
$this->assertEquals($ids['make.wordpress.org/foo/'], get_site_by_path('www.make.wordpress.org', '/foo/bar/baz/qux/', 4)->blog_id);
$this->assertEquals($ids['www.w.org/'], get_site_by_path('www.w.org', '/', 0)->blog_id);
$this->assertEquals($ids['www.w.org/'], get_site_by_path('www.w.org', '/notapath/')->blog_id);
$this->assertEquals($ids['www.w.org/foo/bar/'], get_site_by_path('www.w.org', '/foo/bar/baz/')->blog_id);
$this->assertEquals($ids['www.w.org/foo/'], get_site_by_path('www.w.org', '/foo/bar/baz/', 1)->blog_id);
// A site installed with www will not be found by the root domain.
$this->assertFalse(get_site_by_path('w.org', '/'));
$this->assertFalse(get_site_by_path('w.org', '/notapath/'));
$this->assertFalse(get_site_by_path('w.org', '/foo/bar/baz/'));
$this->assertFalse(get_site_by_path('w.org', '/foo/bar/baz/', 1));
// A site will not be found by its root domain when an invalid subdomain is requested.
$this->assertFalse(get_site_by_path('invalid.wordpress.org', '/'));
$this->assertFalse(get_site_by_path('invalid.wordpress.org', '/foo/bar/'));
}
示例2: check_mappings_for_site
/**
* Check if a domain belongs to a mapped network
*
* @param stdClass|null $network Site object if already found, null otherwise
* @param string $domain Domain we're looking for
* @return stdClass|null Site object if already found, null otherwise
*/
function check_mappings_for_site($site, $domain, $path, $path_segments)
{
// Have we already matched? (Allows other plugins to match first)
if (!empty($site)) {
return $site;
}
$domains = get_possible_mapped_domains($domain);
$mapping = Network_Mapping::get_active_by_domain($domains);
if (empty($mapping) || is_wp_error($mapping)) {
return $site;
}
// Fetch the actual data for the site
$mapped_network = $mapping->get_network();
if (empty($mapped_network)) {
return $site;
}
// We found a network, now check for the site. Replace mapped domain with
// network's original to find.
$mapped_domain = $mapping->get_domain();
if (substr($mapped_domain, 0, 4) === 'www.') {
$mapped_domain = substr($mapped_domain, 4);
}
$subdomain = substr($domain, 0, -strlen($mapped_domain));
return get_site_by_path($subdomain . $mapped_network->domain, $path, $path_segments);
}
示例3: test_get_site_by_path
/**
* @ticket 27003
* @ticket 27927
* @dataProvider data_get_site_by_path
*
* @param string $expected_key The array key associated with expected data for the test.
* @param string $domain The requested domain.
* @param string $path The requested path.
* @param int $segments Optional. Number of segments to use in `get_site_by_path()`.
*/
public function test_get_site_by_path($expected_key, $domain, $path, $segments = null)
{
$site = get_site_by_path($domain, $path, $segments);
if ($expected_key) {
$this->assertEquals(self::$site_ids[$expected_key], $site->blog_id);
} else {
$this->assertFalse($site);
}
}
示例4: find_site
/**
* Find site by domain.
*
* @param string $domain The domain to look for.
*
* @return \WP_Site|null
*/
protected function find_site($domain)
{
if (empty($domain) || !is_string($domain)) {
return;
}
// Get site by domain.
if ($site = get_site_by_path($domain, '')) {
return $site instanceof WP_Site ? $site : new WP_Site($site);
}
// Redirect to main site if no site is found.
if ($site = get_site(1)) {
$scheme = is_ssl() ? 'https' : 'http';
$uri = sprintf('%s://%s', $scheme, $site->domain);
header('Location: ' . $uri);
die;
}
}
示例5: test_get_site_by_path
/**
* @ticket 27003
*/
function test_get_site_by_path() {
$ids = array(
'wordpress.org/' => array( 'domain' => 'wordpress.org', 'path' => '/' ),
'wordpress.org/foo/' => array( 'domain' => 'wordpress.org', 'path' => '/foo/' ),
'wordpress.org/foo/bar/' => array( 'domain' => 'wordpress.org', 'path' => '/foo/bar/' ),
'make.wordpress.org/' => array( 'domain' => 'make.wordpress.org', 'path' => '/' ),
'make.wordpress.org/foo/' => array( 'domain' => 'make.wordpress.org', 'path' => '/foo/' ),
);
foreach ( $ids as &$id ) {
$id = $this->factory->blog->create( $id );
}
unset( $id );
$this->assertEquals( $ids['wordpress.org/'],
get_site_by_path( 'wordpress.org', '/notapath/' )->blog_id );
$this->assertEquals( $ids['wordpress.org/foo/bar/'],
get_site_by_path( 'wordpress.org', '/foo/bar/baz/' )->blog_id );
$this->assertEquals( $ids['wordpress.org/foo/bar/'],
get_site_by_path( 'wordpress.org', '/foo/bar/baz/', 3 )->blog_id );
$this->assertEquals( $ids['wordpress.org/foo/bar/'],
get_site_by_path( 'wordpress.org', '/foo/bar/baz/', 2 )->blog_id );
$this->assertEquals( $ids['wordpress.org/foo/'],
get_site_by_path( 'wordpress.org', '/foo/bar/baz/', 1 )->blog_id );
$this->assertEquals( $ids['wordpress.org/'],
get_site_by_path( 'wordpress.org', '/', 0 )->blog_id );
$this->assertEquals( $ids['make.wordpress.org/foo/'],
get_site_by_path( 'make.wordpress.org', '/foo/bar/baz/qux/', 4 )->blog_id );
}
示例6: ms_load_current_site_and_network
/**
* Identifies the network and site of a requested domain and path and populates the
* corresponding network and site global objects as part of the multisite bootstrap process.
*
* Prior to 4.6.0, this was a procedural block in `ms-settings.php`. It was wrapped into
* a function to facilitate unit tests. It should not be used outside of core.
*
* Usually, it's easier to query the site first, which then declares its network.
* In limited situations, we either can or must find the network first.
*
* If a network and site are found, a `true` response will be returned so that the
* request can continue.
*
* If neither a network or site is found, `false` or a URL string will be returned
* so that either an error can be shown or a redirect can occur.
*
* @since 4.6.0
* @access private
*
* @global wpdb $wpdb WordPress database abstraction object.
* @global WP_Network $current_site The current network.
* @global WP_Site $current_blog The current site.
*
* @param string $domain The requested domain.
* @param string $path The requested path.
* @param bool $subdomain Whether a subdomain (true) or subdirectory (false) configuration.
* @return bool|string True if bootstrap successfully populated `$current_blog` and `$current_site`.
* False if bootstrap could not be properly completed.
* Redirect URL if parts exist, but the request as a whole can not be fulfilled.
*/
function ms_load_current_site_and_network($domain, $path, $subdomain = false)
{
global $wpdb, $current_site, $current_blog;
// If the network is defined in wp-config.php, we can simply use that.
if (defined('DOMAIN_CURRENT_SITE') && defined('PATH_CURRENT_SITE')) {
$current_site = new stdClass();
$current_site->id = defined('SITE_ID_CURRENT_SITE') ? SITE_ID_CURRENT_SITE : 1;
$current_site->domain = DOMAIN_CURRENT_SITE;
$current_site->path = PATH_CURRENT_SITE;
if (defined('BLOG_ID_CURRENT_SITE')) {
$current_site->blog_id = BLOG_ID_CURRENT_SITE;
} elseif (defined('BLOGID_CURRENT_SITE')) {
// deprecated.
$current_site->blog_id = BLOGID_CURRENT_SITE;
}
if (0 === strcasecmp($current_site->domain, $domain) && 0 === strcasecmp($current_site->path, $path)) {
$current_blog = get_site_by_path($domain, $path);
} elseif ('/' !== $current_site->path && 0 === strcasecmp($current_site->domain, $domain) && 0 === stripos($path, $current_site->path)) {
// If the current network has a path and also matches the domain and path of the request,
// we need to look for a site using the first path segment following the network's path.
$current_blog = get_site_by_path($domain, $path, 1 + count(explode('/', trim($current_site->path, '/'))));
} else {
// Otherwise, use the first path segment (as usual).
$current_blog = get_site_by_path($domain, $path, 1);
}
} elseif (!$subdomain) {
/*
* A "subdomain" install can be re-interpreted to mean "can support any domain".
* If we're not dealing with one of these installs, then the important part is determining
* the network first, because we need the network's path to identify any sites.
*/
if (!($current_site = wp_cache_get('current_network', 'site-options'))) {
// Are there even two networks installed?
$one_network = $wpdb->get_row("SELECT * FROM {$wpdb->site} LIMIT 2");
// [sic]
if (1 === $wpdb->num_rows) {
$current_site = new WP_Network($one_network);
wp_cache_add('current_network', $current_site, 'site-options');
} elseif (0 === $wpdb->num_rows) {
// A network not found hook should fire here.
return false;
}
}
if (empty($current_site)) {
$current_site = WP_Network::get_by_path($domain, $path, 1);
}
if (empty($current_site)) {
/**
* Fires when a network cannot be found based on the requested domain and path.
*
* At the time of this action, the only recourse is to redirect somewhere
* and exit. If you want to declare a particular network, do so earlier.
*
* @since 4.4.0
*
* @param string $domain The domain used to search for a network.
* @param string $path The path used to search for a path.
*/
do_action('ms_network_not_found', $domain, $path);
return false;
} elseif ($path === $current_site->path) {
$current_blog = get_site_by_path($domain, $path);
} else {
// Search the network path + one more path segment (on top of the network path).
$current_blog = get_site_by_path($domain, $path, substr_count($current_site->path, '/'));
}
} else {
// Find the site by the domain and at most the first path segment.
$current_blog = get_site_by_path($domain, $path, 1);
if ($current_blog) {
//.........这里部分代码省略.........
示例7: get_network_by_path
}
}
if (empty($current_site)) {
$current_site = get_network_by_path($domain, $path, 1);
}
if (empty($current_site)) {
ms_not_installed();
} elseif ($path === $current_site->path) {
$current_blog = get_site_by_path($domain, $path);
} else {
// Search the network path + one more path segment (on top of the network path).
$current_blog = get_site_by_path($domain, $path, substr_count($current_site->path, '/'));
}
} else {
// Find the site by the domain and at most the first path segment.
$current_blog = get_site_by_path($domain, $path, 1);
if ($current_blog) {
$current_site = wp_get_network($current_blog->site_id ? $current_blog->site_id : 1);
} else {
// If you don't have a site with the same domain/path as a network, you're pretty screwed, but:
$current_site = get_network_by_path($domain, $path, 1);
}
}
// The network declared by the site trumps any constants.
if ($current_blog && $current_blog->site_id != $current_site->id) {
$current_site = wp_get_network($current_blog->site_id);
}
// No network has been found, bail.
if (empty($current_site)) {
ms_not_installed();
}
示例8: go_to
function go_to($url)
{
global $wpdb;
global $current_site, $current_blog, $blog_id, $switched, $_wp_switched_stack, $public, $table_prefix, $current_user, $wp_roles;
// note: the WP and WP_Query classes like to silently fetch parameters
// from all over the place (globals, GET, etc), which makes it tricky
// to run them more than once without very carefully clearing everything
$_GET = $_POST = array();
foreach (array('query_string', 'id', 'postdata', 'authordata', 'day', 'currentmonth', 'page', 'pages', 'multipage', 'more', 'numpages', 'pagenow') as $v) {
if (isset($GLOBALS[$v])) {
unset($GLOBALS[$v]);
}
}
$parts = parse_url($url);
if (isset($parts['scheme'])) {
// set the HTTP_HOST
$GLOBALS['_SERVER']['HTTP_HOST'] = $parts['host'];
$req = $parts['path'];
if (isset($parts['query'])) {
$req .= '?' . $parts['query'];
// parse the url query vars into $_GET
parse_str($parts['query'], $_GET);
}
} else {
$req = $url;
}
if (!isset($parts['query'])) {
$parts['query'] = '';
}
// Scheme
if (0 === strpos($req, '/wp-admin') && force_ssl_admin()) {
$_SERVER['HTTPS'] = 'on';
} else {
unset($_SERVER['HTTPS']);
}
// Set this for bp_core_set_uri_globals()
$GLOBALS['_SERVER']['REQUEST_URI'] = $req;
unset($_SERVER['PATH_INFO']);
// setup $current_site and $current_blog globals for multisite based on
// REQUEST_URI; mostly copied from /wp-includes/ms-settings.php
if (is_multisite()) {
$current_blog = $current_site = $blog_id = null;
$domain = addslashes($_SERVER['HTTP_HOST']);
if (false !== strpos($domain, ':')) {
if (substr($domain, -3) == ':80') {
$domain = substr($domain, 0, -3);
$_SERVER['HTTP_HOST'] = substr($_SERVER['HTTP_HOST'], 0, -3);
} elseif (substr($domain, -4) == ':443') {
$domain = substr($domain, 0, -4);
$_SERVER['HTTP_HOST'] = substr($_SERVER['HTTP_HOST'], 0, -4);
}
}
$path = stripslashes($_SERVER['REQUEST_URI']);
// Get a cleaned-up version of the wp_version string
// (strip -src, -alpha, etc which may trip up version_compare())
$wp_version = (double) $GLOBALS['wp_version'];
if (version_compare($wp_version, '4.4', '>=')) {
if (!($current_site = wp_cache_get('current_network', 'site-options'))) {
// Are there even two networks installed?
$one_network = $wpdb->get_row("SELECT * FROM {$wpdb->site} LIMIT 2");
// [sic]
if (1 === $wpdb->num_rows) {
$current_site = new WP_Network($one_network);
wp_cache_add('current_network', $current_site, 'site-options');
} elseif (0 === $wpdb->num_rows) {
ms_not_installed($domain, $path);
}
}
if (empty($current_site)) {
$current_site = WP_Network::get_by_path($domain, $path, 1);
}
// The network declared by the site trumps any constants.
if ($current_blog && $current_blog->site_id != $current_site->id) {
$current_site = WP_Network::get_instance($current_blog->site_id);
}
if (empty($current_site)) {
do_action('ms_network_not_found', $domain, $path);
ms_not_installed($domain, $path);
} elseif ($path === $current_site->path) {
$current_blog = get_site_by_path($domain, $path);
} else {
// Search the network path + one more path segment (on top of the network path).
$current_blog = get_site_by_path($domain, $path, substr_count($current_site->path, '/'));
}
// Figure out the current network's main site.
if (empty($current_site->blog_id)) {
if ($current_blog->domain === $current_site->domain && $current_blog->path === $current_site->path) {
$current_site->blog_id = $current_blog->blog_id;
} elseif (!($current_site->blog_id = wp_cache_get('network:' . $current_site->id . ':main_site', 'site-options'))) {
$current_site->blog_id = $wpdb->get_var($wpdb->prepare("SELECT blog_id FROM {$wpdb->blogs} WHERE domain = %s AND path = %s", $current_site->domain, $current_site->path));
wp_cache_add('network:' . $current_site->id . ':main_site', $current_site->blog_id, 'site-options');
}
}
$blog_id = $current_blog->blog_id;
$public = $current_blog->public;
if (empty($current_blog->site_id)) {
// This dates to [MU134] and shouldn't be relevant anymore,
// but it could be possible for arguments passed to insert_blog() etc.
$current_blog->site_id = 1;
}
//.........这里部分代码省略.........
示例9: dirname
<?php
/**
* Sets up $current_site and $current_blog for Multi-site domain routing.
*
* @see file: wp/wp-includes/ms-settings.php
* @see https://wordpress.org/plugins/wordpress-mu-domain-mapping/
*/
if (!isset($_SERVER['HTTP_HOST'])) {
return;
}
if (file_exists(dirname(__FILE__) . '/local-sunrise.php')) {
require_once dirname(__FILE__) . '/local-sunrise.php';
}
// If we can't identify the current site, assume it's blog_id = 1
if (!get_site_by_path($_SERVER['HTTP_HOST'], '/')) {
$current_blog = $wpdb->get_row("SELECT * FROM {$wpdb->blogs} WHERE blog_id = 1 LIMIT 1");
$current_site = $wpdb->get_row("SELECT * from {$wpdb->site} WHERE id = '{$current_blog->site_id}' LIMIT 0,1");
$current_site->blog_id = 1;
$current_site->domain = $_SERVER['HTTP_HOST'];
}
示例10: test_get_site_by_path_returns_wp_site
/**
* @ticket 37053
*/
public function test_get_site_by_path_returns_wp_site()
{
add_filter('pre_get_site_by_path', array($this, 'filter_pre_get_site_by_path'), 10, 3);
$site = get_site_by_path('example.com', '/foo/');
remove_filter('pre_get_site_by_path', array($this, 'filter_pre_get_site_by_path'), 10);
$this->assertInstanceOf('WP_Site', $site);
}