WordPress get_site_url()的替代方案

时间:2014-02-05 14:31:47

标签: php wordpress

我正在尝试获取类似于WordPress网站网址的值,以识别某个WordPress安装。

由于get_site_url可以改变(使用插件或直接),我想出了这个:

untrailingslashit('http://'.$_SERVER['HTTP_HOST'].str_replace($_SERVER['DOCUMENT_ROOT'],'', ABSPATH));

这给我提供了基于它的地址来识别WordPress的好结果,但是如果这可能会导致某些服务器安装出现问题,那我很好奇吗?

3 个答案:

答案 0 :(得分:2)

我希望此链接可以帮助您更好地理解使用

的含义

home_url() vs site_url()

home_url() will only return the mapped domain on or after the init has fired. Calling it before then will return the .wordpress.com domain.

If you accidentally use site_url() in your templates, theme-side links will still redirect correctly to the home_url() equivalent.

home_url() is the preferred method, as it avoids the above redirect.

答案 1 :(得分:1)

根据您提供的信息,这是我的答案。

创建一个功能。首先检查主页是否在wp-config中定义为常量。如果是这样,那就是URL。它会覆盖任何DB值,因此如果设置不正确,该站点将无法运行。

如果未设置,则运行手动数据库查询以从选项表中获取home的值。通过手动运行而不是使用get_option,在使用它之前,插件无法更改此值。

function wpse_get_license_url() {
     global $wpdb;

     if ( defined( 'WP_HOME' ) ) {
         return WP_HOME;
     } else {
         $row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", 'home' ) );
         return $row->option_value;
     } 
}

答案 2 :(得分:0)

blogininfo('siteurl');
get_option('home');

home_url();
site_url();