Make WordPress Core

Ticket #19902: 19902.2.diff

File 19902.2.diff, 2.5 KB (added by ericlewis, 9 years ago)
  • src/wp-includes/link-template.php

     
    30483048}
    30493049
    30503050/**
     3051 * Retrieve the blog url for a given site
     3052 *
     3053 * Blog url might be site root or set as a page.
     3054 *
     3055 * @since 4.5.0
     3056 *
     3057 * @return string Blog url
     3058 */
     3059function get_blog_url( $blog_id = null ) {
     3060
     3061        if ( empty( $blog_id ) || ! is_multisite() ) {
     3062                $show_on_front = get_option( 'show_on_front' );
     3063                $page_for_posts  = get_option( 'page_for_posts' );
     3064
     3065                if ( 'page' == $show_on_front && $page_for_posts ) {
     3066                        $url = get_permalink( $page_for_posts );
     3067                } else {
     3068                        $url = get_home_url( $blog_id );
     3069                }
     3070        } else {
     3071                $show_on_front = get_blog_option( $blog_id, 'show_on_front' );
     3072                $page_for_posts  = get_blog_option( $blog_id, 'page_for_posts' );
     3073
     3074                if ( ! empty( $page_for_posts ) && 'page' == $show_on_front ) {
     3075                        $url = get_blog_permalink( $blog_id, $page_for_posts );
     3076                } else {
     3077                        $url = get_home_url( $blog_id );
     3078                }
     3079        }
     3080
     3081        /**
     3082         * Filter the blog URL.
     3083         *
     3084         * @since 4.5.0
     3085         *
     3086         * @param string      $url     The complete blog URL including scheme and path.
     3087         * @param int|null    $blog_id Blog ID, or null for the current blog.
     3088         */
     3089        return apply_filters( 'get_blog_url', $url, $blog_id );
     3090}
     3091
     3092/**
    30513093 * Retrieve the url to the admin area for the current site.
    30523094 *
    30533095 * @since 2.6.0
  • tests/phpunit/tests/link/getBlogUrl.php

     
     1<?php
     2
     3/**
     4 * @group link
     5 */
     6class Tests_Link_GetBlogUrl extends WP_UnitTestCase {
     7        /**
     8         * @ticket 19902
     9         */
     10        public function test_get_blog_url_with_post_archive_on_front_page() {
     11                update_option( 'show_on_front', 'posts' );
     12                $actual = get_blog_url();
     13                $expected = get_home_url();
     14                $this->assertSame( $actual, $expected );
     15        }
     16
     17        /**
     18         * @ticket 19902
     19         */
     20        public function test_get_blog_url_with_post_archive_on_a_blog_page() {
     21                $page_for_posts = $this->factory->post->create( array( 'post_title' => 'blog-page', 'post_type' => 'page' ) );
     22                update_option( 'show_on_front', 'page' );
     23                update_option( 'page_for_posts', $page_for_posts );
     24                $actual = get_blog_url();
     25                $expected = get_permalink( $page_for_posts );
     26                $this->assertSame( $actual, $expected );
     27        }
     28}