Edit site_url with filter

With WordPress, calling site_url() returns the full site URL (http://www.example.com)
What I’m trying to do is adding something (add-something-here) at the end of the URL with filter.

The result I’m expecting is:
http://www.example.com/add-something-here

Read More

Does someone know how to do that with filter?

I tried the following with no success:

function custom_site_url($url) {
    return get_site_url('/add-something-here');
}
add_filter('site_url', 'custom_site_url');

Related posts

Leave a Reply

3 comments

  1. The problem is that you are producing a loop with this filter. The function get_site_url is exactly where the filter site_url is being called.

    You need:

    add_filter( 'site_url', 'custom_site_url' );
    
    function custom_site_url( $url )
    {
        if( is_admin() ) // you probably don't want this in admin side
            return $url;
    
        return $url .'/something';
    }
    

    Bear in mind, that this may produce errors for scripts that rely on the real URL.

  2. Untested, but since it’s PHP could you just try…

    function custom_site_url($url) {
        return get_site_url() . '/add-something-here';
    }
    add_filter('site_url', 'custom_site_url');
    
  3. Untested, but this is a snippet of what I use often:

    $constant = 'add-something-here';
    return '<a href="'. esc_url(site_url().'/'.$constant.'/'">'. esc_html( $name ).'</a>'; 
    

    or you might simply want to get the page ID instead and it’s much better.

     $page_id = '2014';
     return  <a href="'. get_page_link ($page_id) .'">'.esc_html__( 'pagename', 'text-domain' ).'</a>