0

我使用本地主机站点作为创建其他站点的基础。我正在使用 php 通过查找当前域并使用简码显示它来生成内部链接。我打算将我的网站上传到实时主机,因此域会发生变化,并且我的内部链接不会被破坏。

//add shortcode that displays current site name
function GR_site_name(){
$currentDomain = $_SERVER['HTTP_HOST'];
return $currentDomain.'/wordpress';
}

add_shortcode('GR_site_name', 'GR_site_name');
?>

我已经通过将代码添加到实时站点来对此进行了测试,并且效果很好。

我已阅读有关$_SERVER["HTTP_HOST"] 的安全性的帖子?但是,由于它运行的脚本,它将其详细说明为“通常不安全”。

$_SERVER['SERVER_NAME'] 比 $_SERVER['HTTP_HOST'] 安全吗?或者两者都被视为不好的做法?

4

2 回答 2

0

使用标准WP_HOMEWP_SITEURL常量的组合以及site_url()函数。

我建议wp-config.php对实时站点使用一个本地副本和一个不同的副本,然后将以下内容添加到其中:

define('WP_SITEURL', 'http://www.example.com/wordpress');   // Or 'http://localhost/wordpress' for the local copy
define('WP_HOME', 'http://www.example.com');

这样,您就不需要自定义函数或简码 - 您可以简单地调用site_url()任何需要的地方来获取您的 WP 网站的 URL。

或者,如果您需要保留站点 URL 变量并接受指向它的任何内容:

define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/wordpress');
define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/wordpress');

如果您需要保留短代码以在帖子的上下文中使用,您可以将其更改为:

function GR_site_name(){
    return site_url();
}

请注意,设置WP_HOMEWP_SITEURL覆盖站点 URL 的任何数据库设置,如果您访问该Settings->General页面,您会看到这两个字段显示为灰色。

于 2018-04-09T14:31:33.260 回答
0

使用 define('host',' https://example.com ') 创建一个配置文件,并在任何你想要的地方使用主机,当你将脚本上传到服务器时,只需更改配置文件中的 url 就可以了

于 2018-04-09T14:04:59.197 回答