2

使用 WordPress,调用site_url()会返回完整的站点 URL ( http://www.example.com) 我要做的是add-something-here在带有过滤器的 URL 的末尾添加一些东西 ()。

我期待的结果是: http://www.example.com/add-something-here

有人知道如何用过滤器做到这一点吗?

我尝试了以下但没有成功:

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

3 回答 3

2

问题是您正在使用此过滤器生成一个循环。该函数get_site_url正是site_url调用过滤器的位置。

你需要:

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

请记住,这可能会对依赖于真实 URL 的脚本产生错误。

于 2013-03-16T23:30:56.497 回答
0

未经测试,但既然它是 PHP,你可以试试...

function custom_site_url($url) {
    return get_site_url() . '/add-something-here';
}
add_filter('site_url', 'custom_site_url');
于 2013-03-16T22:45:27.487 回答
0

未经测试,但这是我经常使用的片段:

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

或者您可能只是想获取页面 ID,这样会好得多。

 $page_id = '2014';
 return  <a href="'. get_page_link ($page_id) .'">'.esc_html__( 'pagename', 'text-domain' ).'</a>
于 2016-03-28T08:39:01.897 回答